ZQuest Classic Coverage Report


Directory: src/
File: src/zq/zq_custom.cpp
Date: 2024-08-04 23:08:25
Exec Total Coverage
Lines: 836 3859 21.7%
Functions: 3 80 3.8%
Branches: 60 2127 2.8%

Line Branch Exec Source
1 #include <map>
2 #include <cstring>
3 #include <stdio.h>
4 #include <cstring>
5
6 #include "base/files.h"
7 #include "base/qrs.h"
8 #include "base/packfile.h"
9 #include "base/gui.h"
10 #include "qst.h"
11 #include "zc/zc_custom.h"
12 #include "zq/zq_custom.h"
13 #include "tiles.h"
14 #include "zq/zq_tiles.h"
15 #include "zq/zq_misc.h"
16 #include "zq/zquest.h"
17 #include "items.h"
18 #include "base/zsys.h"
19 #include "sfx.h"
20 #include "init.h"
21 #include "defdata.h"
22 #include "zc/ffscript.h"
23 #include "dialog/itemeditor.h"
24 #include "dialog/misc_sfx.h"
25 #include "dialog/misc_sprs.h"
26 #include "dialog/info.h"
27 #include "dialog/spritedata.h"
28 #include "dialog/info_lister.h"
29 #include "zinfo.h"
30 extern FFScript FFCore;
31
32 extern int32_t ex;
33 extern void reset_itembuf(itemdata *item, int32_t id);
34 extern const char *sfxlist(int32_t index, int32_t *list_size);
35 // zq_subscr.cpp
36 extern int32_t sstype_drop_proc(int32_t msg,DIALOG *d,int32_t c);
37
38 extern int32_t biw_cnt;
39
40 extern ZModule zcm;
41 extern zcmodule moduledata;
42
43
44 #ifdef _MSC_VER
45 #define stricmp _stricmp
46 #endif
47
48
49 int32_t hero_animation_speed = 1; //lower is faster animation
50
51 int32_t d_ecstile_proc(int32_t msg,DIALOG *d,int32_t c);
52
53 int32_t d_cstile_proc(int32_t msg,DIALOG *d,int32_t c)
54 {
55 //these are here to bypass compiler warnings about unused arguments
56 c=c;
57
58 switch(msg)
59 {
60 case MSG_CLICK:
61 {
62 int32_t f = 0;
63 int32_t t = d->d1;
64 int32_t cs = d->d2;
65
66 if((CHECK_CTRL_CMD)
67 ? select_tile_2(t,f,1,cs,true)
68 : select_tile(t,f,1,cs,true))
69 {
70 d->d1 = t;
71 d->d2 = cs;
72 return D_REDRAW;
73 }
74 }
75 break;
76
77 case MSG_DRAW:
78 d->w = 36;
79 d->h = 36;
80
81 BITMAP *buf = create_bitmap_ex(8,20,20);
82 BITMAP *bigbmp = create_bitmap_ex(8,d->w,d->h);
83
84 if(buf && bigbmp)
85 {
86 clear_bitmap(buf);
87
88 if(d->d1)
89 overtile16(buf,d->d1,2,2,d->d2,0);
90
91 stretch_blit(buf, bigbmp, 2,2, 17, 17, 2, 2, d->w-2, d->h-2);
92 destroy_bitmap(buf);
93 jwin_draw_frame(bigbmp,0,0,d->w,d->h,FR_DEEP);
94 blit(bigbmp,screen,0,0,d->x,d->y,d->w,d->h);
95 destroy_bitmap(bigbmp);
96 }
97
98 // text_mode(d->bg);
99 FONT *fonty = font;
100 textprintf_ex(screen,fonty,d->x+d->w,d->y+2,jwin_pal[jcBOXFG],jwin_pal[jcBOX],"Tile: %d",d->d1);
101 textprintf_ex(screen,fonty,d->x+d->w,d->y+text_height(fonty)+3,jwin_pal[jcBOXFG],jwin_pal[jcBOX],"CSet: %d",d->d2);
102 break;
103 }
104
105 return D_O_K;
106 }
107
108 4 void large_dialog(DIALOG *d)
109 {
110 4 large_dialog(d, 1.5f);
111 4 }
112
113 4 void large_dialog(DIALOG *d, float RESIZE_AMT)
114 {
115
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 if(d[0].d1 == 0)
116 {
117 4 d[0].d1 = 1;
118 4 int32_t oldwidth = d[0].w;
119 4 int32_t oldheight = d[0].h;
120 4 int32_t oldx = d[0].x;
121 4 int32_t oldy = d[0].y;
122 4 d[0].x -= int32_t(float(d[0].w)/RESIZE_AMT);
123 4 d[0].y -= int32_t(float(d[0].h)/RESIZE_AMT);
124 4 d[0].w = int32_t(float(d[0].w)*RESIZE_AMT);
125 4 d[0].h = int32_t(float(d[0].h)*RESIZE_AMT);
126
127
2/2
✓ Branch 0 taken 204 times.
✓ Branch 1 taken 4 times.
208 for(int32_t i=1; d[i].proc!=NULL; i++)
128 {
129 // Place elements horizontally
130 204 double xpc = ((double)(d[i].x - oldx) / (double)oldwidth);
131 204 d[i].x = int32_t(d[0].x + (xpc*double(d[0].w)));
132
133 // Horizontally resize elements
134
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
204 if((d[i].proc == d_maptile_proc && d[i].dp2!=(void*)1))
135 {
136 d[i].x += (int32_t)(float(d[i].w)/4.f);
137 }
138
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
204 else if(d[i].proc == d_comboframe_proc)
139 {
140 d[i].w *= 2;
141 d[i].w -= 4;
142 }
143
3/6
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 204 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 204 times.
204 else if(d[i].proc == d_wflag_proc || d[i].proc==d_bitmap_proc || d[i].proc == d_maptile_proc)
144 {
145 d[i].w *= 2;
146 }
147
3/4
✓ Branch 0 taken 132 times.
✓ Branch 1 taken 72 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 132 times.
204 else if(d[i].proc == jwin_button_proc || d[i].proc == jwin_swapbtn_proc)
148 72 d[i].w = int32_t(d[i].w*1.5);
149 132 else d[i].w = int32_t(float(d[i].w)*RESIZE_AMT);
150
151 // Place elements vertically
152 204 double ypc = ((double)(d[i].y - oldy) / (double)oldheight);
153 204 d[i].y = int32_t(d[0].y + (ypc*double(d[0].h)));
154
155 // Vertically resize elements
156
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 204 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
204 if((d[i].proc == d_maptile_proc && d[i].dp2!=(void*)1))
157 {
158 }
159
4/6
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 196 times.
204 else if(d[i].proc == jwin_edit_proc || d[i].proc == jwin_check_proc || d[i].proc == jwin_checkfont_proc)
160 {
161 8 d[i].h = int32_t((double)d[i].h*1.5);
162 8 }
163
5/10
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 196 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 196 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 196 times.
392 else if(d[i].proc == jwin_droplist_proc || d[i].proc == d_ndroplist_proc || d[i].proc == d_idroplist_proc || d[i].proc == d_nidroplist_proc || d[i].proc == d_dropdmaplist_proc
164
3/6
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 196 times.
✗ Branch 5 not taken.
196 || d[i].proc == jwin_as_droplist_proc || d[i].proc == d_ffcombolist_proc || d[i].proc == sstype_drop_proc
165
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 || d[i].proc == d_comboalist_proc)
166 {
167 d[i].y += int32_t((double)d[i].h*0.25);
168 d[i].h = int32_t((double)d[i].h*1.25);
169 }
170
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 else if(d[i].proc == d_comboframe_proc)
171 {
172 d[i].h *= 2;
173 d[i].h -= 4;
174 }
175
3/6
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 196 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 196 times.
196 else if(d[i].proc == d_wflag_proc || d[i].proc==d_bitmap_proc || d[i].proc == d_maptile_proc)
176 {
177 d[i].h *= 2;
178 }
179
3/4
✓ Branch 0 taken 124 times.
✓ Branch 1 taken 72 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 124 times.
196 else if(d[i].proc == jwin_button_proc || d[i].proc == jwin_swapbtn_proc)
180 72 d[i].h = int32_t(d[i].h*1.5);
181 124 else d[i].h = int32_t(float(d[i].h)*RESIZE_AMT);
182
183 // Fix frames
184
1/2
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
204 if(d[i].proc == jwin_frame_proc)
185 {
186 d[i].x++;
187 d[i].y++;
188 d[i].w-=4;
189 d[i].h-=4;
190 }
191 204 }
192 4 }
193
194
2/2
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 204 times.
208 for(int32_t i=1; d[i].proc != NULL; i++)
195 {
196
1/2
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
204 if(d[i].proc==jwin_slider_proc)
197 continue;
198
199 // Bigger font
200
5/8
✓ Branch 0 taken 204 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✓ Branch 3 taken 104 times.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
304 bool bigfontproc = (d[i].proc != jwin_droplist_proc && d[i].proc != jwin_abclist_proc && d[i].proc != d_wlist_proc && d[i].proc != jwin_list_proc && d[i].proc != d_dmaplist_proc
201
5/10
✓ Branch 0 taken 100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
100 && d[i].proc != d_dropdmaplist_proc && d[i].proc != d_warplist_proc && d[i].proc != d_warplist_proc && d[i].proc != d_wclist_proc && d[i].proc != d_ndroplist_proc
202
6/12
✓ Branch 0 taken 100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 100 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 100 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 100 times.
✗ Branch 11 not taken.
100 && d[i].proc != d_idroplist_proc && d[i].proc != d_nidroplist_proc && d[i].proc != jwin_as_droplist_proc && d[i].proc != d_ffcombolist_proc && d[i].proc != d_enelist_proc && d[i].proc != sstype_drop_proc
203
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 100 times.
100 && d[i].proc != d_comboalist_proc);
204
205
3/4
✓ Branch 0 taken 100 times.
✓ Branch 1 taken 104 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 100 times.
204 if(bigfontproc && !d[i].dp2)
206 {
207 100 d[i].dp2 = get_zc_font(font_lfont_l);
208 100 }
209
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 104 times.
104 else if(!bigfontproc)
210 {
211 104 ((ListData *) d[i].dp)->font = &a4fonts[font_lfont_l];
212 104 }
213
214 // Make checkboxes work
215
2/2
✓ Branch 0 taken 196 times.
✓ Branch 1 taken 8 times.
204 if(d[i].proc == jwin_check_proc)
216 8 d[i].proc = jwin_checkfont_proc;
217
1/2
✓ Branch 0 taken 196 times.
✗ Branch 1 not taken.
196 else if(d[i].proc == jwin_radio_proc)
218 d[i].proc = jwin_radiofont_proc;
219 204 }
220
221 4 jwin_center_dialog(d);
222 4 }
223
224 9 static ListData weapon_list(weaponlist_num, &a4fonts[font_pfont]);
225
226 const char *defenselist(int32_t index, int32_t *list_size)
227 {
228 if(index>=0)
229 {
230 bound(index,0,edLAST-1);
231
232 switch(index)
233 {
234 case 0:
235 return "(None)";
236
237 case edHALFDAMAGE:
238 return "1/2 Damage";
239
240 case edQUARTDAMAGE:
241 return "1/4 Damage";
242
243
244 case edSTUNONLY:
245 return "Stun";
246
247 case edSTUNORCHINK:
248 return "Stun Or Block";
249
250 case edSTUNORIGNORE:
251 return "Stun Or Ignore";
252
253 case edCHINKL1:
254 return "Block If < 1";
255
256 case edCHINKL2:
257 return "Block If < 2";
258
259 case edCHINKL4:
260 return "Block If < 4";
261
262 case edCHINKL6:
263 return "Block If < 6";
264
265 case edCHINKL8:
266 return "Block If < 8";
267
268
269
270 case edCHINK:
271 return "Block";
272
273 case edIGNOREL1:
274 return "Ignore If < 1";
275
276 case edIGNORE:
277 return "Ignore";
278
279
280
281
282 case ed1HKO:
283 return "One-Hit-Kill";
284
285 case edCHINKL10: //If damage is less than 10
286 return "Block if Power < 10";
287
288 case ed2x: //Double damage
289 return "Double Damage";
290 case ed3x: //Triple Damage
291 return "Triple Damage";
292 case ed4x: //4x damage
293 return "Quadruple Damage";
294
295 case edHEAL: //recover the weapon damage in HP
296 return "Enemy Gains HP = Damage";
297
298 case edTRIGGERSECRETS: //Triggers screen secrets.
299 return "Trigger Screen Secrets";
300
301 case edSPLIT:
302 return "Split";
303 case edREPLACE:
304 return "Transform";
305
306 case edSUMMON:
307 return "Summon";
308
309 case edEXPLODESMALL:
310 return "Bomb Explosion";
311
312 case edEXPLODELARGE:
313 return "Superbomb Explosion";
314
315 case edEXPLODEHARMLESS:
316 return "Harmless Explosion";
317
318 case edFREEZE: //Hit by ice..
319 return "Freeze Solid";
320
321 case edSWITCH:
322 return "Switch w/ Player";
323 default:
324 return "[reserved]";
325 }
326 }
327
328 *list_size = edLAST;
329 return NULL;
330 }
331
332 9 static ListData defense_list(defenselist, &font);
333
334 const char *itemscriptdroplist(int32_t index, int32_t *list_size)
335 {
336 if(index<0)
337 {
338 *list_size = biitems_cnt;
339 return NULL;
340 }
341
342 return biitems[index].first.c_str();
343 }
344
345 9 ListData itemscript_list(itemscriptdroplist, &a4fonts[font_pfont]);
346
347 const char *itemspritescriptdroplist(int32_t index, int32_t *list_size)
348 {
349 if(index<0)
350 {
351 *list_size = biitemsprites_cnt;
352 return NULL;
353 }
354
355 return biditemsprites[index].first.c_str();
356 }
357
358 9 ListData itemspritescript_list(itemspritescriptdroplist, &a4fonts[font_pfont]);
359
360 const char *lweaponscriptdroplist(int32_t index, int32_t *list_size)
361 {
362 if(index<0)
363 {
364 *list_size = bilweapons_cnt;
365 return NULL;
366 }
367
368 return bilweapons[index].first.c_str();
369 }
370
371 9 ListData lweaponscript_list(lweaponscriptdroplist, &a4fonts[font_pfont]);
372
373 void edit_itemdata(int32_t index)
374 {
375 call_item_editor(index);
376 }
377
378 int32_t readoneitem(PACKFILE *f, int32_t index)
379 {
380 dword section_version = 0;
381 dword section_cversion = 0;
382 int32_t zversion = 0;
383 int32_t zbuild = 0;
384 itemdata tempitem;
385 memset(&tempitem, 0, sizeof(itemdata));
386 //reset_itembuf(&tempitem,i);
387
388
389 char istring[64]={0};
390 //section version info
391 if(!p_igetl(&zversion,f))
392 {
393 return 0;
394 }
395 if(!p_igetl(&zbuild,f))
396 {
397 return 0;
398 }
399
400 if(!p_igetw(&section_version,f))
401 {
402 return 0;
403 }
404
405 if(!p_igetw(&section_cversion,f))
406 {
407 return 0;
408 }
409 al_trace("readoneitem section_version: %d\n", section_version);
410 al_trace("readoneitem section_cversion: %d\n", section_cversion);
411
412 if ( zversion > ZELDA_VERSION )
413 {
414 al_trace("Cannot read .zitem packfile made in ZC version (%x) in this version of ZC (%x)\n", zversion, ZELDA_VERSION);
415 return 0;
416 }
417 else if ( ( section_version > V_ITEMS ) || ( section_version == V_ITEMS && section_cversion < CV_ITEMS ) )
418 {
419 al_trace("Cannot read .zitem packfile made using V_ITEMS (%d) subversion (%d)\n", section_version, section_cversion);
420 return 0;
421
422 }
423 else
424 {
425 al_trace("Reading a .zitem packfile made in ZC Version: %x, Build: %d\n", zversion, zbuild);
426 }
427
428 if(!pfread(&istring, 64, f))
429 {
430 return 0;
431 }
432
433 if(!p_igetl(&tempitem.tile,f))
434 {
435 return 0;
436 }
437
438 if(!p_getc(&tempitem.misc_flags,f))
439 {
440 return 0;
441 }
442
443 if(!p_getc(&tempitem.csets,f))
444 {
445 return 0;
446 }
447
448 if(!p_getc(&tempitem.frames,f))
449 {
450 return 0;
451 }
452
453 if(!p_getc(&tempitem.speed,f))
454 {
455 return 0;
456 }
457
458 if(!p_getc(&tempitem.delay,f))
459 {
460 return 0;
461 }
462
463 if(!p_igetl(&tempitem.ltm,f))
464 {
465 return 0;
466 }
467
468 if(!p_igetl(&tempitem.family,f))
469 {
470 return 0;
471 }
472
473 if(!p_getc(&tempitem.fam_type,f))
474 {
475 return 0;
476 }
477
478 if(!p_igetl(&tempitem.power,f))
479 {
480 return 0;
481 }
482
483 if(!p_igetl(&tempitem.flags,f))
484 {
485 return 0;
486 }
487
488 if(!p_igetw(&tempitem.script,f))
489 {
490 return 0;
491 }
492
493 if(!p_getc(&tempitem.count,f))
494 {
495 return 0;
496 }
497
498 if(!p_igetw(&tempitem.amount,f))
499 {
500 return 0;
501 }
502
503 if(!p_igetw(&tempitem.collect_script,f))
504 {
505 return 0;
506 }
507
508 if(!p_igetw(&tempitem.setmax,f))
509 {
510 return 0;
511 }
512
513 if(!p_igetw(&tempitem.max,f))
514 {
515 return 0;
516 }
517
518 if(!p_getc(&tempitem.playsound,f))
519 {
520 return 0;
521 }
522
523 for(int32_t j=0; j<8; j++)
524 {
525 if(!p_igetl(&tempitem.initiald[j],f))
526 {
527 return 0;
528 }
529 }
530
531 for(int32_t j=0; j<2; j++)
532 {
533 if(!p_getc(&tempitem.initiala[j],f))
534 {
535 return 0;
536 }
537 }
538
539 if(!p_getc(&tempitem.wpn,f))
540 {
541 return 0;
542 }
543
544 if(!p_getc(&tempitem.wpn2,f))
545 {
546 return 0;
547 }
548
549 if(!p_getc(&tempitem.wpn3,f))
550 {
551 return 0;
552 }
553
554 if(!p_getc(&tempitem.wpn4,f))
555 {
556 return 0;
557 }
558
559 if(!p_getc(&tempitem.wpn5,f))
560 {
561 return 0;
562 }
563
564 if(!p_getc(&tempitem.wpn6,f))
565 {
566 return 0;
567 }
568
569 if(!p_getc(&tempitem.wpn7,f))
570 {
571 return 0;
572 }
573
574 if(!p_getc(&tempitem.wpn8,f))
575 {
576 return 0;
577 }
578
579 if(!p_getc(&tempitem.wpn9,f))
580 {
581 return 0;
582 }
583
584 if(!p_getc(&tempitem.wpn10,f))
585 {
586 return 0;
587 }
588
589 if(!p_getc(&tempitem.pickup_hearts,f))
590 {
591 return 0;
592 }
593
594 if(!p_igetl(&tempitem.misc1,f))
595 {
596 return 0;
597 }
598
599 if(!p_igetl(&tempitem.misc2,f))
600 {
601 return 0;
602 }
603
604 if(section_version < 53)
605 {
606 byte tempbyte;
607 if(!p_getc(&tempbyte,f))
608 {
609 return 0;
610 }
611 tempitem.cost_amount[0] = tempbyte;
612 switch(tempitem.family)
613 {
614 case itype_arrow:
615 case itype_bomb:
616 case itype_sbomb:
617 tempitem.cost_amount[1] = 1;
618 break;
619 default:
620 tempitem.cost_amount[1] = 0;
621 }
622 }
623 else
624 {
625 for(auto q = 0; q < 2; ++q)
626 {
627 if(!p_igetw(&tempitem.cost_amount[q],f))
628 {
629 return 0;
630 }
631 }
632 }
633
634 if(!p_igetl(&tempitem.misc3,f))
635 {
636 return 0;
637 }
638
639 if(!p_igetl(&tempitem.misc4,f))
640 {
641 return 0;
642 }
643
644 if(!p_igetl(&tempitem.misc5,f))
645 {
646 return 0;
647 }
648
649 if(!p_igetl(&tempitem.misc6,f))
650 {
651 return 0;
652 }
653
654 if(!p_igetl(&tempitem.misc7,f))
655 {
656 return 0;
657 }
658
659 if(!p_igetl(&tempitem.misc8,f))
660 {
661 return 0;
662 }
663
664 if(!p_igetl(&tempitem.misc9,f))
665 {
666 return 0;
667 }
668
669 if(!p_igetl(&tempitem.misc10,f))
670 {
671 return 0;
672 }
673
674 if(!p_getc(&tempitem.usesound,f))
675 {
676 return 0;
677 }
678
679 if(!p_getc(&tempitem.usesound2,f))
680 {
681 return 0;
682 }
683
684 if ( zversion >= 0x255 )
685 {
686 if ( section_version >= 45 )
687 {
688 //New itemdata vars -Z
689 //! version 27
690
691 if(!p_getc(&tempitem.useweapon,f))
692 {
693 return 0;
694 }
695 if(!p_getc(&tempitem.usedefence,f))
696 {
697 return 0;
698 }
699 if(!p_igetl(&tempitem.weaprange,f))
700 {
701 return 0;
702 }
703 if(!p_igetl(&tempitem.weapduration,f))
704 {
705 return 0;
706 }
707 for ( int32_t q = 0; q < ITEM_MOVEMENT_PATTERNS; q++ ) {
708 if(!p_igetl(&tempitem.weap_pattern[q],f))
709 {
710 return 0;
711 }
712 }
713 //version 28
714 if(!p_igetl(&tempitem.duplicates,f))
715 {
716 return 0;
717 }
718 for ( int32_t q = 0; q < INITIAL_D; q++ )
719 {
720 if(!p_igetl(&tempitem.weap_initiald[q],f))
721 {
722 return 0;
723 }
724 }
725 for ( int32_t q = 0; q < INITIAL_A; q++ )
726 {
727 if(!p_getc(&tempitem.weap_initiala[q],f))
728 {
729 return 0;
730 }
731 }
732
733 if(!p_getc(&tempitem.drawlayer,f))
734 {
735 return 0;
736 }
737
738
739 if(!p_igetl(&tempitem.hxofs,f))
740 {
741 return 0;
742 }
743 if(!p_igetl(&tempitem.hyofs,f))
744 {
745 return 0;
746 }
747 if(!p_igetl(&tempitem.hxsz,f))
748 {
749 return 0;
750 }
751 if(!p_igetl(&tempitem.hysz,f))
752 {
753 return 0;
754 }
755 if(!p_igetl(&tempitem.hzsz,f))
756 {
757 return 0;
758 }
759 if(!p_igetl(&tempitem.xofs,f))
760 {
761 return 0;
762 }
763 if(!p_igetl(&tempitem.yofs,f))
764 {
765 return 0;
766 }
767 if(!p_igetl(&tempitem.weap_hxofs,f))
768 {
769 return 0;
770 }
771 if(!p_igetl(&tempitem.weap_hyofs,f))
772 {
773 return 0;
774 }
775 if(!p_igetl(&tempitem.weap_hxsz,f))
776 {
777 return 0;
778 }
779 if(!p_igetl(&tempitem.weap_hysz,f))
780 {
781 return 0;
782 }
783 if(!p_igetl(&tempitem.weap_hzsz,f))
784 {
785 return 0;
786 }
787 if(!p_igetl(&tempitem.weap_xofs,f))
788 {
789 return 0;
790 }
791 if(!p_igetl(&tempitem.weap_yofs,f))
792 {
793 return 0;
794 }
795 if(!p_igetw(&tempitem.weaponscript,f))
796 {
797 return 0;
798 }
799 if(!p_igetl(&tempitem.wpnsprite,f))
800 {
801 return 0;
802 }
803 size_t num_cost_tmr = (section_version > 52 ? 2 : 1);
804 for(size_t q = 0; q < num_cost_tmr; ++q)
805 {
806 if(!p_igetl(&tempitem.magiccosttimer[q],f))
807 {
808 return 0;
809 }
810 }
811 if(!p_igetl(&tempitem.overrideFLAGS,f))
812 {
813 return 0;
814 }
815 if(!p_igetl(&tempitem.tilew,f))
816 {
817 return 0;
818 }
819 if(!p_igetl(&tempitem.tileh,f))
820 {
821 return 0;
822 }
823 if(!p_igetl(&tempitem.weapoverrideFLAGS,f))
824 {
825 return 0;
826 }
827 if(!p_igetl(&tempitem.weap_tilew,f))
828 {
829 return 0;
830 }
831 if(!p_igetl(&tempitem.weap_tileh,f))
832 {
833 return 0;
834 }
835 if(!p_igetl(&tempitem.pickup,f))
836 {
837 return 0;
838 }
839 if(!p_igetw(&tempitem.pstring,f))
840 {
841 return 0;
842 }
843 if(!p_igetw(&tempitem.pickup_string_flags,f))
844 {
845 return 0;
846 }
847
848 size_t num_cost_ctr = (section_version > 52 ? 2 : 1);
849 for(size_t q = 0; q < num_cost_ctr; ++q)
850 {
851 if(!p_getc(&tempitem.cost_counter[q],f))
852 {
853 return 0;
854 }
855 }
856
857 //InitD[] labels
858 for ( int32_t q = 0; q < 8; q++ )
859 {
860 for ( int32_t w = 0; w < 65; w++ )
861 {
862 if(!p_getc(&tempitem.initD_label[q][w],f))
863 {
864 return 0;
865 }
866 }
867 for ( int32_t w = 0; w < 65; w++ )
868 {
869 if(!p_getc(&tempitem.weapon_initD_label[q][w],f))
870 {
871 return 0;
872 }
873 }
874 for ( int32_t w = 0; w < 65; w++ )
875 {
876 if(!p_getc(&tempitem.sprite_initD_label[q][w],f))
877 {
878 return 0;
879 }
880 }
881 if(!p_igetl(&tempitem.sprite_initiald[q],f))
882 {
883 return 0;
884 }
885 }
886 for ( int32_t q = 0; q < 2; q++ )
887 {
888 if(!p_getc(&tempitem.sprite_initiala[q],f))
889 {
890 return 0;
891 }
892
893 }
894 if(!p_igetw(&tempitem.sprite_script,f))
895 {
896 return 0;
897 }
898
899 if ( section_version >= 47 )
900 {
901 if(!p_getc(&tempitem.pickupflag,f))
902 {
903 return 0;
904 }
905 }
906 //read it into an item
907 }
908 }
909 itemsbuf[index] = tempitem;
910 strcpy(item_string[index], istring);
911
912 return 1;
913 }
914
915 int32_t writeoneitem(PACKFILE *f, int32_t i)
916 {
917
918 dword section_version=V_ITEMS;
919 dword section_cversion=CV_ITEMS;
920 int32_t zversion = ZELDA_VERSION;
921 int32_t zbuild = VERSION_BUILD;
922
923
924 //section version info
925 if(!p_iputl(zversion,f))
926 {
927 return 0;
928 }
929 if(!p_iputl(zbuild,f))
930 {
931 return 0;
932 }
933 if(!p_iputw(section_version,f))
934 {
935 new_return(2);
936 }
937
938 if(!p_iputw(section_cversion,f))
939 {
940 new_return(3);
941 }
942
943
944
945 //section data
946
947 if(!pfwrite(item_string[i], 64, f))
948 {
949 new_return(5);
950 }
951
952 if(!p_iputl(itemsbuf[i].tile,f))
953 {
954 new_return(6);
955 }
956
957 if(!p_putc(itemsbuf[i].misc_flags,f))
958 {
959 new_return(7);
960 }
961
962 if(!p_putc(itemsbuf[i].csets,f))
963 {
964 new_return(8);
965 }
966
967 if(!p_putc(itemsbuf[i].frames,f))
968 {
969 new_return(9);
970 }
971
972 if(!p_putc(itemsbuf[i].speed,f))
973 {
974 new_return(10);
975 }
976
977 if(!p_putc(itemsbuf[i].delay,f))
978 {
979 new_return(11);
980 }
981
982 if(!p_iputl(itemsbuf[i].ltm,f))
983 {
984 new_return(12);
985 }
986
987 if(!p_iputl(itemsbuf[i].family,f))
988 {
989 new_return(13);
990 }
991
992 if(!p_putc(itemsbuf[i].fam_type,f))
993 {
994 new_return(14);
995 }
996
997 if(!p_iputl(itemsbuf[i].power,f))
998 {
999 new_return(14);
1000 }
1001
1002 if(!p_iputl(itemsbuf[i].flags,f))
1003 {
1004 new_return(15);
1005 }
1006
1007 if(!p_iputw(itemsbuf[i].script,f))
1008 {
1009 new_return(16);
1010 }
1011
1012 if(!p_putc(itemsbuf[i].count,f))
1013 {
1014 new_return(17);
1015 }
1016
1017 if(!p_iputw(itemsbuf[i].amount,f))
1018 {
1019 new_return(18);
1020 }
1021
1022 if(!p_iputw(itemsbuf[i].collect_script,f))
1023 {
1024 new_return(19);
1025 }
1026
1027 if(!p_iputw(itemsbuf[i].setmax,f))
1028 {
1029 new_return(21);
1030 }
1031
1032 if(!p_iputw(itemsbuf[i].max,f))
1033 {
1034 new_return(22);
1035 }
1036
1037 if(!p_putc(itemsbuf[i].playsound,f))
1038 {
1039 new_return(23);
1040 }
1041
1042 for(int32_t j=0; j<8; j++)
1043 {
1044 if(!p_iputl(itemsbuf[i].initiald[j],f))
1045 {
1046 new_return(24);
1047 }
1048 }
1049
1050 for(int32_t j=0; j<2; j++)
1051 {
1052 if(!p_putc(itemsbuf[i].initiala[j],f))
1053 {
1054 new_return(25);
1055 }
1056 }
1057
1058 if(!p_putc(itemsbuf[i].wpn,f))
1059 {
1060 new_return(26);
1061 }
1062
1063 if(!p_putc(itemsbuf[i].wpn2,f))
1064 {
1065 new_return(27);
1066 }
1067
1068 if(!p_putc(itemsbuf[i].wpn3,f))
1069 {
1070 new_return(28);
1071 }
1072
1073 if(!p_putc(itemsbuf[i].wpn4,f))
1074 {
1075 new_return(29);
1076 }
1077
1078 if(!p_putc(itemsbuf[i].wpn5,f))
1079 {
1080 new_return(30);
1081 }
1082
1083 if(!p_putc(itemsbuf[i].wpn6,f))
1084 {
1085 new_return(31);
1086 }
1087
1088 if(!p_putc(itemsbuf[i].wpn7,f))
1089 {
1090 new_return(32);
1091 }
1092
1093 if(!p_putc(itemsbuf[i].wpn8,f))
1094 {
1095 new_return(33);
1096 }
1097
1098 if(!p_putc(itemsbuf[i].wpn9,f))
1099 {
1100 new_return(34);
1101 }
1102
1103 if(!p_putc(itemsbuf[i].wpn10,f))
1104 {
1105 new_return(35);
1106 }
1107
1108 if(!p_putc(itemsbuf[i].pickup_hearts,f))
1109 {
1110 new_return(36);
1111 }
1112
1113 if(!p_iputl(itemsbuf[i].misc1,f))
1114 {
1115 new_return(37);
1116 }
1117
1118 if(!p_iputl(itemsbuf[i].misc2,f))
1119 {
1120 new_return(38);
1121 }
1122
1123 for(auto q = 0; q < 2; ++q)
1124 {
1125 if(!p_iputw(itemsbuf[i].cost_amount[q],f))
1126 {
1127 new_return(39);
1128 }
1129 }
1130
1131 if(!p_iputl(itemsbuf[i].misc3,f))
1132 {
1133 new_return(40);
1134 }
1135
1136 if(!p_iputl(itemsbuf[i].misc4,f))
1137 {
1138 new_return(41);
1139 }
1140
1141 if(!p_iputl(itemsbuf[i].misc5,f))
1142 {
1143 new_return(42);
1144 }
1145
1146 if(!p_iputl(itemsbuf[i].misc6,f))
1147 {
1148 new_return(43);
1149 }
1150
1151 if(!p_iputl(itemsbuf[i].misc7,f))
1152 {
1153 new_return(44);
1154 }
1155
1156 if(!p_iputl(itemsbuf[i].misc8,f))
1157 {
1158 new_return(45);
1159 }
1160
1161 if(!p_iputl(itemsbuf[i].misc9,f))
1162 {
1163 new_return(46);
1164 }
1165
1166 if(!p_iputl(itemsbuf[i].misc10,f))
1167 {
1168 new_return(47);
1169 }
1170
1171 if(!p_putc(itemsbuf[i].usesound,f))
1172 {
1173 new_return(48);
1174 }
1175
1176 if(!p_putc(itemsbuf[i].usesound2,f))
1177 {
1178 new_return(48);
1179 }
1180
1181 //New itemdata vars -Z
1182 //! version 27
1183
1184 if(!p_putc(itemsbuf[i].useweapon,f))
1185 {
1186 new_return(49);
1187 }
1188 if(!p_putc(itemsbuf[i].usedefence,f))
1189 {
1190 new_return(50);
1191 }
1192 if(!p_iputl(itemsbuf[i].weaprange,f))
1193 {
1194 new_return(51);
1195 }
1196 if(!p_iputl(itemsbuf[i].weapduration,f))
1197 {
1198 new_return(52);
1199 }
1200 for ( int32_t q = 0; q < ITEM_MOVEMENT_PATTERNS; q++ ) {
1201 if(!p_iputl(itemsbuf[i].weap_pattern[q],f))
1202 {
1203 new_return(53);
1204 }
1205 }
1206 //version 28
1207 if(!p_iputl(itemsbuf[i].duplicates,f))
1208 {
1209 new_return(54);
1210 }
1211 for ( int32_t q = 0; q < INITIAL_D; q++ )
1212 {
1213 if(!p_iputl(itemsbuf[i].weap_initiald[q],f))
1214 {
1215 new_return(55);
1216 }
1217 }
1218 for ( int32_t q = 0; q < INITIAL_A; q++ )
1219 {
1220 if(!p_putc(itemsbuf[i].weap_initiala[q],f))
1221 {
1222 new_return(56);
1223 }
1224 }
1225
1226 if(!p_putc(itemsbuf[i].drawlayer,f))
1227 {
1228 new_return(57);
1229 }
1230
1231
1232 if(!p_iputl(itemsbuf[i].hxofs,f))
1233 {
1234 new_return(58);
1235 }
1236 if(!p_iputl(itemsbuf[i].hyofs,f))
1237 {
1238 new_return(59);
1239 }
1240 if(!p_iputl(itemsbuf[i].hxsz,f))
1241 {
1242 new_return(60);
1243 }
1244 if(!p_iputl(itemsbuf[i].hysz,f))
1245 {
1246 new_return(61);
1247 }
1248 if(!p_iputl(itemsbuf[i].hzsz,f))
1249 {
1250 new_return(62);
1251 }
1252 if(!p_iputl(itemsbuf[i].xofs,f))
1253 {
1254 new_return(63);
1255 }
1256 if(!p_iputl(itemsbuf[i].yofs,f))
1257 {
1258 new_return(64);
1259 }
1260 if(!p_iputl(itemsbuf[i].weap_hxofs,f))
1261 {
1262 new_return(65);
1263 }
1264 if(!p_iputl(itemsbuf[i].weap_hyofs,f))
1265 {
1266 new_return(66);
1267 }
1268 if(!p_iputl(itemsbuf[i].weap_hxsz,f))
1269 {
1270 new_return(67);
1271 }
1272 if(!p_iputl(itemsbuf[i].weap_hysz,f))
1273 {
1274 new_return(68);
1275 }
1276 if(!p_iputl(itemsbuf[i].weap_hzsz,f))
1277 {
1278 new_return(69);
1279 }
1280 if(!p_iputl(itemsbuf[i].weap_xofs,f))
1281 {
1282 new_return(70);
1283 }
1284 if(!p_iputl(itemsbuf[i].weap_yofs,f))
1285 {
1286 new_return(71);
1287 }
1288 if(!p_iputw(itemsbuf[i].weaponscript,f))
1289 {
1290 new_return(72);
1291 }
1292 if(!p_iputl(itemsbuf[i].wpnsprite,f))
1293 {
1294 new_return(73);
1295 }
1296
1297 for(auto q = 0; q < 2; ++q)
1298 {
1299 if(!p_iputl(itemsbuf[i].magiccosttimer[q],f))
1300 {
1301 new_return(74);
1302 }
1303 }
1304 if(!p_iputl(itemsbuf[i].overrideFLAGS,f))
1305 {
1306 new_return(75);
1307 }
1308 if(!p_iputl(itemsbuf[i].tilew,f))
1309 {
1310 new_return(76);
1311 }
1312 if(!p_iputl(itemsbuf[i].tileh,f))
1313 {
1314 new_return(77);
1315 }
1316 if(!p_iputl(itemsbuf[i].weapoverrideFLAGS,f))
1317 {
1318 new_return(78);
1319 }
1320 if(!p_iputl(itemsbuf[i].weap_tilew,f))
1321 {
1322 new_return(79);
1323 }
1324 if(!p_iputl(itemsbuf[i].weap_tileh,f))
1325 {
1326 new_return(80);
1327 }
1328 if(!p_iputl(itemsbuf[i].pickup,f))
1329 {
1330 new_return(81);
1331 }
1332 if(!p_iputw(itemsbuf[i].pstring,f))
1333 {
1334 new_return(82);
1335 }
1336 if(!p_iputw(itemsbuf[i].pickup_string_flags,f))
1337 {
1338 new_return(83);
1339 }
1340
1341 for(auto q = 0; q < 2; ++q)
1342 {
1343 if(!p_putc(itemsbuf[i].cost_counter[q],f))
1344 {
1345 new_return(84);
1346 }
1347 }
1348
1349 //InitD[] labels
1350 for ( int32_t q = 0; q < 8; q++ )
1351 {
1352 for ( int32_t w = 0; w < 65; w++ )
1353 {
1354 if(!p_putc(itemsbuf[i].initD_label[q][w],f))
1355 {
1356 new_return(85);
1357 }
1358 }
1359 for ( int32_t w = 0; w < 65; w++ )
1360 {
1361 if(!p_putc(itemsbuf[i].weapon_initD_label[q][w],f))
1362 {
1363 new_return(86);
1364 }
1365 }
1366 for ( int32_t w = 0; w < 65; w++ )
1367 {
1368 if(!p_putc(itemsbuf[i].sprite_initD_label[q][w],f))
1369 {
1370 new_return(87);
1371 }
1372 }
1373 if(!p_iputl(itemsbuf[i].sprite_initiald[q],f))
1374 {
1375 new_return(88);
1376 }
1377 }
1378 for ( int32_t q = 0; q < 2; q++ )
1379 {
1380 if(!p_putc(itemsbuf[i].sprite_initiala[q],f))
1381 {
1382 new_return(89);
1383 }
1384
1385 }
1386 if(!p_iputw(itemsbuf[i].sprite_script,f))
1387 {
1388 new_return(90);
1389 }
1390 if(!p_putc(itemsbuf[i].pickupflag,f))
1391 {
1392 new_return(91);
1393 }
1394 return 1;
1395 }
1396
1397 int32_t onCustomItems()
1398 {
1399 ItemListerDialog().show();
1400 refresh(rMAP+rCOMBOS);
1401 return D_O_K;
1402 }
1403
1404 static DIALOG wpndata_dlg[] =
1405 {
1406 // (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp)
1407 { jwin_win_proc, 55, 40, 210, 163, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
1408 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
1409 { d_cstile_proc, 198, 84, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
1410 { jwin_button_proc, 90, 176, 61, 21, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
1411 { jwin_button_proc, 170, 176, 61, 21, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
1412 { jwin_check_proc, 198, 109, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Auto-flash", NULL, NULL },
1413 { jwin_check_proc, 198, 120, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "2P Flash", NULL, NULL },
1414 { jwin_check_proc, 198, 131, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "H-Flip", NULL, NULL },
1415 { jwin_check_proc, 198, 142, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "V-Flip", NULL, NULL },
1416 { jwin_text_proc, 61, 88, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Flash CSet:", NULL, NULL },
1417 //10
1418 { jwin_text_proc, 61, 106, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Animation Frames:", NULL, NULL },
1419 { jwin_text_proc, 61, 124, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Animation Speed:", NULL, NULL },
1420 { jwin_text_proc, 61, 142, 96, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Miscellaneous Type:", NULL, NULL },
1421 { jwin_edit_proc, 160, 88, 35, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
1422 { jwin_edit_proc, 160, 106, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1423 { jwin_edit_proc, 160, 124, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1424 { jwin_edit_proc, 160, 142, 35, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
1425 { jwin_check_proc, 198, 153, 65, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Behind", NULL, NULL },
1426 { jwin_edit_proc, 92, 65, 155, 16, vc(12), vc(1), 0, 0, 64, 0, NULL, NULL, NULL },
1427 { jwin_text_proc, 61, 69, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
1428 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
1429 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
1430 };
1431
1432
1433
1434 void edit_weapondata(int32_t index)
1435 {
1436 call_sprite_dlg(index); return;
1437 //OLD CODE
1438 /*
1439 char frm[8], spd[8], fcs[8], typ[8];
1440 char name[64];
1441 char wpnnumstr[75];
1442
1443 sprintf(wpnnumstr, "Sprite %d: %s", index, weapon_string[index]);
1444 wpndata_dlg[0].dp = wpnnumstr;
1445 wpndata_dlg[0].dp2 = get_zc_font(font_lfont);
1446 wpndata_dlg[2].d1 = wpnsbuf[index].tile;
1447 wpndata_dlg[2].d2 = wpnsbuf[index].csets&15;
1448
1449 for(int32_t i=0; i<4; i++)
1450 wpndata_dlg[i+5].flags = (wpnsbuf[index].misc&(1<<i)) ? D_SELECTED : 0;
1451
1452 wpndata_dlg[17].flags = (wpnsbuf[index].misc & WF_BEHIND) ? D_SELECTED : 0;
1453
1454 sprintf(fcs,"%d",wpnsbuf[index].csets>>4);
1455 sprintf(frm,"%d",wpnsbuf[index].frames);
1456 sprintf(spd,"%d",wpnsbuf[index].speed);
1457 sprintf(typ,"%d",wpnsbuf[index].type);
1458 wpndata_dlg[13].dp = fcs;
1459 wpndata_dlg[14].dp = frm;
1460 wpndata_dlg[15].dp = spd;
1461 wpndata_dlg[16].dp = typ;
1462 sprintf(name,"%s",weapon_string[index]);
1463 wpndata_dlg[18].dp = name;
1464
1465 large_dialog(wpndata_dlg);
1466
1467 int32_t ret;
1468 wpndata test;
1469
1470 do
1471 {
1472 ret = do_zqdialog(wpndata_dlg,3);
1473
1474 test.tile = wpndata_dlg[2].d1;
1475 test.csets = wpndata_dlg[2].d2;
1476
1477 test.misc = 0;
1478
1479 for(int32_t i=0; i<4; i++)
1480 if(wpndata_dlg[i+5].flags & D_SELECTED)
1481 test.misc |= 1<<i;
1482
1483 test.misc |= (wpndata_dlg[17].flags & D_SELECTED) ? WF_BEHIND : 0;
1484
1485 test.csets |= (atoi(fcs)&15)<<4;
1486 test.frames = atoi(frm);
1487 test.speed = atoi(spd);
1488 test.type = atoi(typ);
1489 test.script = 0; // Not used yet
1490 }
1491 while(ret==17);
1492
1493 if(ret==3)
1494 {
1495 strcpy(weapon_string[index],name);
1496 wpnsbuf[index] = test;
1497 saved = false;
1498 }*/
1499
1500 }
1501
1502 int32_t onCustomWpns()
1503 {
1504 /*
1505 char *hold = item_string[0];
1506 item_string[0] = "rupee (1)";
1507 */
1508
1509 build_biw_list();
1510
1511 int32_t index = select_weapon("Select Weapon",biw[0].i);
1512
1513 while(index >= 0)
1514 {
1515 edit_weapondata(index);
1516 index = select_weapon("Select Weapon",index);
1517 }
1518
1519 refresh(rMAP+rCOMBOS);
1520 return D_O_K;
1521 }
1522
1523 int32_t onMiscSprites()
1524 {
1525 MiscSprsDialog(QMisc.sprites, 20, [](int32_t* newsprs)
1526 {
1527 saved = false;
1528 for(auto q = 0; q < sprMAX; ++q)
1529 QMisc.sprites[q] = byte(newsprs[q]);
1530 }).show();
1531 return D_O_K;
1532 }
1533
1534 int32_t onMiscSFX()
1535 {
1536 MiscSFXDialog(QMisc.miscsfx, 20, [](int32_t* newsfx)
1537 {
1538 saved = false;
1539 for(auto q = 0; q < sfxMAX; ++q)
1540 QMisc.miscsfx[q] = byte(newsfx[q]);
1541 }).show();
1542 return D_O_K;
1543 }
1544
1545 static int32_t enedata_data_list[] =
1546 {
1547 //2,3,4 --moved to EOL as 247,248,249, to make room for tabs. -Z
1548 247,248,249,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
1549 31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,138,139,140,141,143,-1
1550 };
1551
1552 static int32_t enedata_data2_list[] =
1553 {
1554 54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,179,180,181,182,183,184,187,188,189,190, 288, 289, 296, 297,-1
1555 };
1556
1557 static int32_t enedata_data3_list[] =
1558 {
1559 // d_dummy_proc entries still must be somewhere on the editor.
1560 // They will be hidden, but if ther are not referenced, this causes objects
1561 // to refuse to click!
1562 // This was the cause of flags not clicking properly and Enemy Editor UI elements not responding to mouse input. -Z
1563 5,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,
1564 286,287,290,291,292,293,294,295,298,299,300,301,302,303,304,305,306,307,310,311,312,313,314,315,
1565 -1
1566 };
1567
1568 static int32_t enedata_data4_list[] =
1569 {
1570 308, 309, 316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,
1571 -1
1572 };
1573
1574 static int32_t enedata_flags_list[] =
1575 {
1576 74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,98,99,100,101,102,103,104,105,106,120,121,400,-1
1577 };
1578
1579 static int32_t enedata_flags2_list[] =
1580 {
1581 90,91,92,93,94,95,96,97,401,402,403,404,405,406,407,408,409,410,411,412,413,414,-1
1582 };
1583
1584 static int32_t enedata_editorflags_list[]=
1585 {
1586 254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,
1587 -1
1588 };
1589
1590 static int32_t enedata_flags3_list[] =
1591 {
1592 107,108,109,110,111,112,113,114,115,116,117,118,119,185,186,399,-1
1593 }; //REMEMBER: If you undummy anything from 400-414, make sure to remove it from enedata_flags2_list! That list gets everything in it disabled.
1594
1595 static int32_t enedata_defense_list[] =
1596 {
1597 144,145,146,147,148,149,150,151,152,161,162,163,164,165,166,167,168,169,178,-1
1598 };
1599
1600 static int32_t enedata_defense2_list[] =
1601 {
1602 153,154,155,156,157,158,159,160,170,171,172,173,174,175,176,177,191,192,415,416,-1
1603 };
1604
1605 static int32_t enedata_defense3_list[] =
1606 {
1607 193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,-1
1608 };
1609
1610 static int32_t enedata_spritesize_list[] =
1611 {
1612 213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,237,238,239,240,241,242,243,244,245,246,-1
1613 };
1614
1615 static int32_t enemy_defence_tabs_list[] =
1616 {
1617 2,-1
1618 };
1619
1620 static int32_t enemy_basic_tabs_list[] =
1621 {
1622 3,-1
1623 };
1624
1625 static int32_t enemy_flags_tabs_list[] =
1626 {
1627 4,-1
1628 };
1629
1630
1631 static int32_t enemy_attributes_tabs_list[] =
1632 {
1633 5,-1
1634 };
1635
1636 static int32_t enemy_graphics_tabs_list[] =
1637 {
1638 6,-1
1639 };
1640
1641 static int32_t enemy_movement_tabs_list[] =
1642 {
1643 250,-1
1644 };
1645
1646 static int32_t enemy_script_tabs_list[] =
1647 {
1648 251,-1
1649 };
1650
1651
1652 static int32_t enemy_scripts_list[] =
1653 {
1654
1655 334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,
1656 377,378,379,380,381,382,383,384,
1657 426,427,428,429,430,431,432,433,
1658 -1
1659 };
1660
1661 static int32_t enemy_weapon_scripts_list[] =
1662 {
1663 353,354,355,356,357,358,359,360,
1664 361,362,363,364,365,366,367,368,
1665 369,370,
1666 385,386,387,388,389,390,391,392,
1667 434,435,436,437,438,439,440,441,
1668 -1
1669 };
1670 static int32_t enemy_moveflag_list[] =
1671 {
1672 371, 372, 373, 374, 375, 417, 418, 419,
1673 420, 421, 422, 423, 424, 425,
1674 -1
1675 };
1676 static int32_t enemy_movement_list[] =
1677 {
1678 -1
1679 };
1680
1681 static int32_t enemy_gfx_sprites_list[] =
1682 {
1683 235,236,393,394,395,396,397,398,
1684 -1
1685 };
1686
1687
1688 static TABPANEL enemy_graphics_tabs[] =
1689 {
1690 { (char *)"Sprites", D_SELECTED, enemy_gfx_sprites_list, 0, NULL },
1691 { NULL, 0, NULL, 0, NULL }
1692 };
1693
1694
1695
1696 /*
1697
1698
1699
1700 static int32_t enemy_sounds_tabs_list[] =
1701 {
1702 250,-1
1703 };
1704
1705
1706 static int32_t enemy_attacks_tabs_list[] =
1707 {
1708 5,-1
1709 };
1710
1711 static int32_t enemy_sfx_sounds_list[] =
1712 {
1713 -1
1714 };
1715
1716 static int32_t enemy_sfx_bgsounds_list[] =
1717 {
1718 -1
1719 };
1720
1721 static int32_t enemy_attacks_list[] =
1722 {
1723 -1
1724 };
1725 static int32_t enemy_attacks_Wmove_list[] =
1726 {
1727 -1
1728 };
1729
1730
1731
1732 */
1733
1734
1735
1736
1737
1738 /*
1739
1740 static TABPANEL enemy_sounds_tabs[] =
1741 {
1742 // { (char *)"Sound Efects", D_SELECTED, enemy_sfx_sounds_list, 0, NULL },
1743 // { (char *)"Background Sounds", D_SELECTED, enemy_sfx_bgsounds_list, 0, NULL },
1744 { NULL, 0, NULL, 0, NULL }
1745 };
1746
1747
1748
1749 static TABPANEL enemy_attacks_tabs[] =
1750 {
1751 // { (char *)"Attacks", D_SELECTED, enemy_attacks_list, 0, NULL },
1752 // { (char *)"Weapon Movement", D_SELECTED, enemy_attacks_Wmove_list, 0, NULL },
1753 { NULL, 0, NULL, 0, NULL }
1754 };
1755
1756
1757 */
1758
1759
1760 static int32_t enedata_defense_ranged_list[] =
1761 {
1762 //ranged 1
1763 //brang, arrow, magic, fire, byrna, whistle
1764 144, 161, 147, 164, 150, 167, 148, 165, 160, 177, 191, 192,
1765 -1
1766 };
1767
1768
1769 //193 == text; 203 == lister
1770 static int32_t enedata_defense_script_list[] =
1771 {
1772 193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,-1
1773 };
1774
1775 static int32_t enedata_defense_melee_list[] =
1776 {
1777 //melee
1778 //sword, bomb, sbomb, wand,
1779 153, 170, 145, 162, 146, 163, 149, 166,
1780 //hammer, boots, hookshot
1781 152, 169, 159, 176, 151, 168,
1782 //set all
1783 178,
1784 };
1785
1786 static int32_t enedata_defense_reflected_list[] =
1787 {
1788 //reflected
1789 //ref beam, ref magic, ref fireball, refl rock,
1790 155, 172, 156, 173, 157, 174, 158, 175,
1791 -1
1792 };
1793
1794 static TABPANEL enemy_movement_tabs[] =
1795 {
1796 { (char *)"Move Flags", D_SELECTED, enemy_moveflag_list, 0, NULL },
1797 { (char *)"Enemy Movement", 0, enemy_movement_list, 0, NULL },
1798 { NULL, 0, NULL, 0, NULL }
1799 };
1800
1801 static TABPANEL enemy_script_tabs[] =
1802 {
1803 { (char *)"Action Script", D_SELECTED, enemy_scripts_list, 0, NULL },
1804 { (char *)"Weapon Script", 0, enemy_weapon_scripts_list, 0, NULL },
1805 { NULL, 0, NULL, 0, NULL }
1806 };
1807
1808 static TABPANEL enemy_defence_tabs[] =
1809 {
1810
1811 { (char *)"Defs 1", D_SELECTED, enedata_defense_list, 0, NULL },
1812 { (char *)"Defs 2", 0, enedata_defense2_list, 0, NULL },
1813 { (char *)"Script", 0, enedata_defense3_list, 0, NULL },
1814
1815 /*
1816 { (char *)"Melee", D_SELECTED, enedata_defense_melee_list, 0, NULL },
1817 { (char *)"Ranged", 0, enedata_defense_ranged_list, 0, NULL },
1818 { (char *)"Reflected", 0, enedata_defense_reflected_list, 0, NULL },
1819 { (char *)"Script", 0, enedata_defense_script_list, 0, NULL },
1820 */
1821 { NULL, 0, NULL, 0, NULL }
1822 };
1823
1824 static TABPANEL enemy_flags_tabs[] =
1825 {
1826 { (char *)"Basic Flags", D_SELECTED, enedata_flags_list, 0, NULL },
1827 { (char *)"Behaviour", 0, enedata_editorflags_list, 0, NULL },
1828 { (char *)"Spawn Flags", 0, enedata_flags3_list, 0, NULL },
1829 { NULL, 0, NULL, 0, NULL }
1830 };
1831
1832 static TABPANEL enemy_basic_tabs[] =
1833 {
1834 { (char *)"Data 1", D_SELECTED, enedata_data_list, 0, NULL },
1835 { (char *)"Data 2", 0, enedata_data2_list, 0, NULL },
1836 { (char *)"Data 3", 0, enedata_data3_list, 0, NULL },
1837 { (char *)"Data 4", 0, enedata_data4_list, 0, NULL },
1838 { (char *)"Size", 0, enedata_spritesize_list, 0, NULL },
1839 // { (char *)"Graphics", D_SELECTED, enemy_gfx_sprites_list, 0, NULL },
1840 // { (char *)"Sound Efects", D_SELECTED, enemy_sfx_sounds_list, 0, NULL },
1841 { NULL, 0, NULL, 0, NULL }
1842 };
1843
1844 static TABPANEL enedata_tabs[] =
1845 {
1846 // { (char *)"Data 1", D_SELECTED, enedata_data_list, 0, NULL },
1847 // { (char *)"Data 2", 0, enedata_data2_list, 0, NULL },
1848 { (char *)"Basic", D_SELECTED, enemy_basic_tabs_list, 0, NULL },
1849 // { (char *)"Misc. Flags", 0, enedata_flags_list, 0, NULL },
1850 // { (char *)"Flags 2", 0, enedata_flags2_list, 0, NULL },
1851 { (char *)"Defenses", 0, enemy_defence_tabs_list, 0, NULL },
1852 // { (char *)"Defs 1", 0, enedata_defense_list, 0, NULL },
1853 // { (char *)"Defs 2", 0, enedata_defense2_list, 0, NULL },
1854 // { (char *)"Defs 3", 0, enedata_defense3_list, 0, NULL },
1855 { (char *)"Flags", 0, enemy_flags_tabs_list, 0, NULL },
1856 // { (char *)"Spawn Flags", 0, enedata_flags3_list, 0, NULL },
1857 // { (char *)"Size", 0, enedata_spritesize_list, 0, NULL },
1858 //Unimplemented at present. -Z
1859 { (char *)"Movement", 0, enemy_movement_tabs_list, 0, NULL },
1860 // { (char *)"Attacks", 0, enemy_attacks_tabs_list, 0, NULL },
1861 // { (char *)"Sound Effects", 0, enemy_sounds_tabs_list, 0, NULL },
1862 { (char *)"Graphics", 0, enemy_graphics_tabs_list, 0, NULL },
1863 { (char *)"Scripts", 0, enemy_script_tabs_list, 0, NULL },
1864 { NULL, 0, NULL, 0, NULL }
1865 };
1866
1867
1868 list_data_struct bief[eeMAX];
1869 int32_t bief_cnt=-1;
1870
1871 void build_bief_list()
1872 {
1873 int32_t start=bief_cnt=0;
1874
1875 for(int32_t i=start; i<eeMAX; i++)
1876 {
1877 //Load enemy names from the module
1878 //if(moduledata.enem_type_names[i][0]!='-')
1879 if (moduledata.enem_type_names[i][0]!=0)
1880 {
1881 if(moduledata.enem_type_names[i][0]!='-')
1882 {
1883 //load these from the module
1884 // bief[bief_cnt].s, = (char *)moduledata.enem_type_names[i]); //, (char *)enetype_string[i]);
1885 //bief[bief_cnt].s = (char *)enetype_string[i];
1886 bief[bief_cnt].s = (char *)moduledata.enem_type_names[i];
1887 bief[bief_cnt].i = i;
1888 ++bief_cnt;
1889 }
1890 }
1891 else //not set in the module file, so use the default
1892 {
1893 if(enetype_string[i][0]!='-')
1894 {
1895 //load these from the module
1896 // bief[bief_cnt].s, = (char *)moduledata.enem_type_names[i]); //, (char *)enetype_string[i]);
1897 //bief[bief_cnt].s = (char *)enetype_string[i];
1898 bief[bief_cnt].s = (char *)enetype_string[i];
1899 bief[bief_cnt].i = i;
1900 ++bief_cnt;
1901 }
1902
1903 }
1904
1905 }
1906
1907 // No alphabetic sorting for this list
1908 for(int32_t j=start+1; j<bief_cnt-1; j++)
1909 {
1910 if(!strcmp(bief[j].s,"(None)"))
1911 {
1912 for(int32_t i=j; i>0; i--)
1913 zc_swap(bief[i],bief[i-1]);
1914
1915 break;
1916 }
1917 }
1918 }
1919
1920 const char *enetypelist(int32_t index, int32_t *list_size)
1921 {
1922 if(index<0)
1923 {
1924 *list_size = bief_cnt;
1925 return NULL;
1926 }
1927
1928 return bief[index].s;
1929 }
1930
1931 list_data_struct biea[aMAX];
1932 int32_t biea_cnt=-1;
1933
1934 void build_biea_list()
1935 {
1936 int32_t start=biea_cnt=0;
1937
1938 for(int32_t i=start; i<aMAX; i++)
1939 {
1940
1941 if ( moduledata.enem_anim_type_names[1][0] != 0 )
1942 {
1943 if(eneanim_string[i][0]!='-')
1944 {
1945 biea[biea_cnt].s = (char *)moduledata.enem_anim_type_names[i];
1946 biea[biea_cnt].i = i;
1947 ++biea_cnt;
1948 }
1949 }
1950 else
1951 {
1952 if(eneanim_string[i][0]!='-')
1953 {
1954 biea[biea_cnt].s = (char *)eneanim_string[i];
1955 biea[biea_cnt].i = i;
1956 ++biea_cnt;
1957 }
1958 }
1959 }
1960
1961 for(int32_t i=start; i<biea_cnt-1; i++)
1962 for(int32_t j=i+1; j<biea_cnt; j++)
1963 if(stricmp(biea[i].s,biea[j].s)>0 && strcmp(biea[j].s,""))
1964 zc_swap(biea[i],biea[j]);
1965 }
1966
1967
1968 const char *eneanimlist(int32_t index, int32_t *list_size)
1969 {
1970 if(index<0)
1971 {
1972 *list_size = biea_cnt;
1973 return NULL;
1974 }
1975
1976 return biea[index].s;
1977 }
1978
1979 const char *itemsetlist(int32_t index, int32_t *list_size)
1980 {
1981 if(index>=0)
1982 {
1983 bound(index,0,count_item_drop_sets()-1);
1984 return item_drop_sets[index].name;
1985 // return itemset_string[index];
1986 }
1987
1988 *list_size=count_item_drop_sets();
1989 return NULL;
1990 }
1991
1992 list_data_struct biew[MAXWPNS];
1993 int32_t biew_cnt=-1;
1994
1995 char temp_custom_ew_strings[10][40];
1996
1997 static int32_t enemy_weapon_types[]=
1998 {
1999 128, ewFireball,ewArrow,ewBrang,ewSword,
2000 ewRock,ewMagic,ewBomb,ewSBomb,
2001 //137
2002 ewLitBomb,ewLitSBomb,ewFireTrail,ewFlame,
2003 ewWind,ewFlame2,ewFlame2Trail,
2004 //145
2005 ewIce,ewFireball2
2006
2007 };
2008
2009 static int32_t enemy_script_weapon_types[]=
2010 {
2011 wScript1, wScript2, wScript3, wScript4,
2012 //35
2013 wScript5, wScript6, wScript7, wScript8,
2014 //39
2015 wScript9, wScript10
2016
2017 };
2018
2019 void build_biew_list()
2020 {
2021 biew_cnt=0;
2022
2023 memset(temp_custom_ew_strings, 0, sizeof(temp_custom_ew_strings));
2024
2025 for(int32_t i=0; i<wMax-wEnemyWeapons; i++)
2026 {
2027 //if(eweapon_string[i][0]!='-')
2028 if(moduledata.enemy_weapon_names[i][0]!='-')
2029 {
2030 //biew[biew_cnt].s = (char *)eweapon_string[i];
2031 biew[biew_cnt].s = (char *)moduledata.enemy_weapon_names[i];
2032 biew[biew_cnt].i = enemy_weapon_types[i];
2033 ++biew_cnt;
2034 }
2035 }
2036 for(int32_t i = 0; i < 10; i++)
2037 {
2038 biew[biew_cnt].s = (char *)moduledata.enemy_scriptweaponweapon_names[i];
2039 biew[biew_cnt].i = enemy_script_weapon_types[i];
2040 ++biew_cnt;
2041 }
2042 al_trace("biew_cnt is: %d\n", biew_cnt);
2043 for ( int32_t i = 0; i < biew_cnt; i++ )
2044 {
2045 al_trace("biew[%d] id is (%d) and string is (%s)\n", i, biew[i].i, biew[i].s);
2046
2047 }
2048
2049 }
2050
2051 const char *eweaponlist(int32_t index, int32_t *list_size)
2052 {
2053 if(biew_cnt==-1)
2054 build_biew_list();
2055
2056 if(index>=0)
2057 {
2058 bound(index,0,biew_cnt-1);
2059 return biew[index].s;
2060 }
2061
2062 *list_size=biew_cnt;
2063 return NULL;
2064 }
2065
2066
2067 //
2068 // Enemy Misc. Attribute label swapping device
2069 //
2070 struct EnemyNameInfo
2071 {
2072 int32_t family;
2073 char const* misc[10];
2074 void* list[32];
2075 char *flags[16];
2076 char *attributes[32];
2077
2078 };
2079
2080 const char *walkmisc1list(int32_t index, int32_t *list_size)
2081 {
2082 if(index>=0)
2083 {
2084 bound(index,0,e1tLAST-1);
2085 return walkmisc1_string[index];
2086 }
2087
2088 *list_size = e1tLAST;
2089 return NULL;
2090 }
2091
2092 const char *walkmisc2list(int32_t index, int32_t *list_size)
2093 {
2094 if(index>=0)
2095 {
2096 bound(index,0,e2tTRIBBLE);
2097 return walkmisc2_string[index];
2098 }
2099
2100 *list_size = e2tTRIBBLE+1;
2101 return NULL;
2102 }
2103
2104 const char *walkmisc7list(int32_t index, int32_t *list_size)
2105 {
2106 if(index>=0)
2107 {
2108 bound(index,0,e7tEATHURT);
2109 return walkmisc7_string[index];
2110 }
2111
2112 *list_size = e7tEATHURT+1;
2113 return NULL;
2114 }
2115
2116 const char *walkmisc9list(int32_t index, int32_t *list_size)
2117 {
2118 if(index>=0)
2119 {
2120 bound(index,0,e9tARMOS);
2121 //return walkmisc9_string[index];
2122 return (char *)moduledata.walkmisc9_names[index];
2123 }
2124
2125 *list_size = e9tARMOS+1;
2126 return NULL;
2127 }
2128
2129 const char *gleeokmisc3list(int32_t index, int32_t *list_size)
2130 {
2131 if(index>=0)
2132 {
2133 return (index ? "Breath" : "1 Shot");
2134 }
2135
2136 *list_size = 2;
2137 return NULL;
2138 }
2139
2140 const char *gohmamisc1list(int32_t index, int32_t *list_size)
2141 {
2142 if(index>=0)
2143 {
2144 return (index==2 ? "Breath" : index==1 ? "3 Shots" : "1 Shot");
2145 }
2146
2147 *list_size = 3;
2148 return NULL;
2149 }
2150
2151 const char *manhandlamisc2list(int32_t index, int32_t *list_size)
2152 {
2153 if(index>=0)
2154 {
2155 return (index ? "2x2 (8 Heads)" : "1x1 (4 Heads)");
2156 }
2157
2158 *list_size = 2;
2159 return NULL;
2160 }
2161
2162 const char *aquamisc1list(int32_t index, int32_t *list_size)
2163 {
2164 if(index>=0)
2165 {
2166 return (index ? "Left (Facing Right)" : "Right (Facing Left)");
2167 }
2168
2169 *list_size = 2;
2170 return NULL;
2171 }
2172
2173 const char *patramisc4list(int32_t index, int32_t *list_size)
2174 {
2175 if(index>=0)
2176 {
2177 return (index ? "Oval" : "Big Circle");
2178 }
2179
2180 *list_size = 2;
2181 return NULL;
2182 }
2183
2184 const char *patramisc5list(int32_t index, int32_t *list_size)
2185 {
2186 if(index>=0)
2187 {
2188 return (index==3 ? "Inner + Center" : index==2 ? "Inner Eyes" : index==1 ? "Center Eye" : "None");
2189 }
2190
2191 *list_size = 4;
2192 return NULL;
2193 }
2194
2195 const char *patramisc10list(int32_t index, int32_t *list_size)
2196 {
2197 if(index>=0)
2198 {
2199 return (index ? "2x2 Patra" : "1x1 Patra");
2200 }
2201
2202 *list_size = 2;
2203 return NULL;
2204 }
2205
2206 const char *patramisc20list(int32_t index, int32_t *list_size)
2207 {
2208 if(index>=0)
2209 {
2210 switch(index)
2211 {
2212 case 4:
2213 return "Stream";
2214 case 3:
2215 return "Ring";
2216 case 2:
2217 return "Barrage";
2218 case 1:
2219 return "Random (Single)";
2220 default:
2221 return "Random (Any)";
2222 }
2223 }
2224
2225 *list_size = 5;
2226 return NULL;
2227 }
2228
2229 const char *patramisc22list(int32_t index, int32_t *list_size)
2230 {
2231 if(index>=0)
2232 {
2233 switch(index)
2234 {
2235 case 2:
2236 return "Expand + Warning";
2237 case 1:
2238 return "When Expanding";
2239 default:
2240 return "Never";
2241 }
2242 }
2243
2244 *list_size = 3;
2245 return NULL;
2246 }
2247
2248 const char *patramisc25list(int32_t index, int32_t *list_size)
2249 {
2250 if(index>=0)
2251 {
2252 switch(index)
2253 {
2254 case 3:
2255 return "When behind 1 layer";
2256 case 2:
2257 return "When Invulnerable";
2258 case 1:
2259 return "When Vulnerable";
2260 default:
2261 return "Always";
2262 }
2263 }
2264
2265 *list_size = 4;
2266 return NULL;
2267 }
2268
2269 const char *patramisc26list(int32_t index, int32_t *list_size)
2270 {
2271 if(index>=0)
2272 {
2273 switch(index)
2274 {
2275 case 2:
2276 return "Without Outer Ring";
2277 case 1:
2278 return "With Outer Ring";
2279 default:
2280 return "Always";
2281 }
2282 }
2283
2284 *list_size = 3;
2285 return NULL;
2286 }
2287
2288 const char *patramisc28list(int32_t index, int32_t *list_size)
2289 {
2290 if(index>=0)
2291 {
2292 bound(index,0,patratLAST-1);
2293 return patramisc28_string[index];
2294 }
2295
2296 *list_size = patratLAST;
2297 return NULL;
2298 }
2299
2300 const char *dodongomisc10list(int32_t index, int32_t *list_size)
2301 {
2302 if(index>=0)
2303 {
2304 return (index ? "BS-Zelda" : "NES");
2305 }
2306
2307 *list_size = 2;
2308 return NULL;
2309 }
2310
2311 const char *digdoggermisc10list(int32_t index, int32_t *list_size)
2312 {
2313 if(index>=0)
2314 {
2315 return (index ? "Kid" : "Digdogger");
2316 }
2317
2318 *list_size = 2;
2319 return NULL;
2320 }
2321
2322 const char *walkerspawnlist(int32_t index, int32_t *list_size)
2323 {
2324 if(index>=0)
2325 {
2326 return (index==2 ? "Instant" : index==1 ? "Flicker" : "Puff");
2327 }
2328
2329 *list_size = 3;
2330 return NULL;
2331 }
2332
2333 const char *wizzrobemisc1list(int32_t index, int32_t *list_size)
2334 {
2335 if(index>=0)
2336 {
2337 return (index ? "Phase" : "Teleport");
2338 }
2339
2340 *list_size = 2;
2341 return NULL;
2342 }
2343
2344 const char *wizzrobemisc2list(int32_t index, int32_t *list_size)
2345 {
2346 if(index>=0)
2347 {
2348 return (index==3 ? "Summon (Layer)" : index==2 ? "Summon" : index==1 ? "8 Shots" : "1 Shot");
2349 }
2350
2351 *list_size = 4;
2352 return NULL;
2353 }
2354
2355 const char *keesemisc1list(int32_t index, int32_t *list_size)
2356 {
2357 if(index>=0)
2358 {
2359 return (index > 1 ? "Keese (Fast)" : index > 0 ? "Bat" : "Keese");
2360 }
2361
2362 *list_size = 3;
2363 return NULL;
2364 }
2365
2366 const char *keesemisc2list(int32_t index, int32_t *list_size)
2367 {
2368 if(index>=0)
2369 {
2370 return (index ? "Tribble" : "Normal");
2371 }
2372
2373 *list_size = 2;
2374 return NULL;
2375 }
2376
2377 const char *trapmisc2list(int32_t index, int32_t *list_size)
2378 {
2379 if(index>=0)
2380 {
2381 return (index ? "Constant" : "Line Of Sight");
2382 }
2383
2384 *list_size = 2;
2385 return NULL;
2386 }
2387
2388 const char *trapmisc1list(int32_t index, int32_t *list_size)
2389 {
2390 if(index>=0)
2391 {
2392 return (index==2 ? "Vertical" : index==1 ? "Horizontal" : "4-Way");
2393 }
2394
2395 *list_size = 3;
2396 return NULL;
2397 }
2398
2399 const char *leevermisc1list(int32_t index, int32_t *list_size)
2400 {
2401 if(index>=0)
2402 {
2403 if(index==0)
2404 return "Player's path";
2405 else if(index==1)
2406 return "In place";
2407 else if(index==2)
2408 return "Player's path + second";
2409 }
2410
2411 *list_size = 3;
2412 return NULL;
2413 }
2414
2415 const char *rockmisc1list(int32_t index, int32_t *list_size)
2416 {
2417 if(index>=0)
2418 {
2419 return (index ? "2x2" : "1x1");
2420 }
2421
2422 *list_size = 2;
2423 return NULL;
2424 }
2425
2426 // 0: no, 1: yes
2427 const char *yesnomisclist(int32_t index, int32_t *list_size)
2428 {
2429 if(index>=0)
2430 {
2431 return (index ? "Yes" : "No");
2432 }
2433
2434 *list_size = 2;
2435 return NULL;
2436 }
2437
2438 // 0: yes, 1: no
2439 const char *noyesmisclist(int32_t index, int32_t *list_size)
2440 {
2441 if(index>=0)
2442 {
2443 return (index ? "No" : "Yes");
2444 }
2445
2446 *list_size = 2;
2447 return NULL;
2448 }
2449
2450 9 static ListData walkmisc1_list(walkmisc1list, &a4fonts[font_lfont_l]);
2451 9 static ListData walkmisc2_list(walkmisc2list, &a4fonts[font_lfont_l]);
2452 9 static ListData walkmisc7_list(walkmisc7list, &a4fonts[font_lfont_l]);
2453 9 static ListData walkmisc9_list(walkmisc9list, &a4fonts[font_lfont_l]);
2454
2455 9 static ListData gleeokmisc3_list(gleeokmisc3list, &a4fonts[font_lfont_l]);
2456 9 static ListData gohmamisc1_list(gohmamisc1list, &a4fonts[font_lfont_l]);
2457 9 static ListData manhandlamisc2_list(manhandlamisc2list, &a4fonts[font_lfont_l]);
2458 9 static ListData aquamisc1_list(aquamisc1list, &a4fonts[font_lfont_l]);
2459
2460 9 static ListData patramisc4_list(patramisc4list, &a4fonts[font_lfont_l]);
2461 9 static ListData patramisc5_list(patramisc5list, &a4fonts[font_lfont_l]);
2462 9 static ListData patramisc10_list(patramisc10list, &a4fonts[font_lfont_l]);
2463 9 static ListData patramisc20_list(patramisc20list, &a4fonts[font_lfont_l]);
2464 9 static ListData patramisc22_list(patramisc22list, &a4fonts[font_lfont_l]);
2465 9 static ListData patramisc25_list(patramisc25list, &a4fonts[font_lfont_l]);
2466 9 static ListData patramisc26_list(patramisc26list, &a4fonts[font_lfont_l]);
2467 9 static ListData patramisc28_list(patramisc28list, &a4fonts[font_lfont_l]);
2468
2469 9 static ListData dodongomisc10_list(dodongomisc10list, &a4fonts[font_lfont_l]);
2470
2471 9 static ListData keesemisc1_list(keesemisc1list, &a4fonts[font_lfont_l]);
2472 9 static ListData keesemisc2_list(keesemisc2list, &a4fonts[font_lfont_l]);
2473
2474 9 static ListData digdoggermisc10_list(digdoggermisc10list, &a4fonts[font_lfont_l]);
2475
2476 9 static ListData wizzrobemisc1_list(wizzrobemisc1list, &a4fonts[font_lfont_l]);
2477 9 static ListData wizzrobemisc2_list(wizzrobemisc2list, &a4fonts[font_lfont_l]);
2478
2479 9 static ListData trapmisc1_list(trapmisc1list, &a4fonts[font_lfont_l]);
2480 9 static ListData trapmisc2_list(trapmisc2list, &a4fonts[font_lfont_l]);
2481
2482 9 static ListData leevermisc1_list(leevermisc1list, &a4fonts[font_lfont_l]);
2483 9 static ListData rockmisc1_list(rockmisc1list, &a4fonts[font_lfont_l]);
2484
2485 9 static ListData yesnomisc_list(yesnomisclist, &a4fonts[font_lfont_l]);
2486 9 static ListData noyesmisc_list(noyesmisclist, &a4fonts[font_lfont_l]);
2487
2488 static EnemyNameInfo enameinf[]=
2489 {
2490 {
2491 //"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility"
2492 eeWALK, { "Shot Type:", "Death Type:", "Death Attr. 1:", "Death Attr. 2:", "Death Attr. 3:", "Extra Shots:", "Touch Effects:", "Effect Strength:", "Walk Style:", "Walk Attr.:" },
2493 { (void*)&walkmisc1_list, (void*)&walkmisc2_list, NULL, NULL, NULL, NULL, (void*)&walkmisc7_list, NULL, (void*)&walkmisc9_list, NULL, //10
2494 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2495 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2496 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",
2497 (char *)"Draw Invisible as Cloaked",(char *)"Split in Place",(char *)"BFlags[5]:",(char *)"BFlags[6]:",(char *)"BFlags[7]:",
2498 (char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",
2499 (char *)"Fast Drawing",(char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2500 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2501 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2502 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2503 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2504 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2505 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2506 }
2507 },
2508 {
2509 eeGLEEOK, { "Heads:", "Head HP:", "Shot Type:", NULL, "Neck Segments:", "Neck Offset 1:", "Neck Offset 2:", "Head Offset:", "Fly Head Offset:", NULL },
2510 { NULL, NULL, (void*)&gleeokmisc3_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2511 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2512 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2513 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Center Spawn X Point",(char *)"Heads Block Projectiles",
2514 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2515 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2516 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2517 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2518 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2519 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2520 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2521 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2522 }
2523 },
2524 {
2525 eeDIG, { "Enemy 1 ID:", "Enemy 2 ID:", "Enemy 3 ID:", "Enemy 4 ID:", "Enemy 1 Qty:", "Enemy 2 Qty:", "Enemy 3 Qty:", "Enemy 4 Qty:", "Unused:", "Type:" },
2526 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&digdoggermisc10_list, //10
2527 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2528 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2529 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2530 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2531 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2532 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2533 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2534 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2535 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2536 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2537 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2538 }
2539 },
2540 {
2541 eePATRA, { "Outer Eyes:", "Inner Eyes:", "Eyes' HP:", "Eye Movement:", "Shooters:", "Pattern Odds:", "Pattern Cycles:", "Eye Offset:", "Eye CSet:", "Type:" },
2542 { NULL, NULL, NULL, (void*)&patramisc4_list, (void*)&patramisc5_list, NULL, NULL, NULL, NULL, (void*)&patramisc10_list, //10
2543 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&patramisc20_list, NULL, //21
2544 (void*)&patramisc22_list, NULL, NULL, (void*)&patramisc25_list, (void*)&patramisc26_list, NULL, (void*)&patramisc28_list, NULL, NULL, NULL, NULL}, //32
2545 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Has Firing Animation",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Slow down when Firing",(char *)"Don't attack when expanding",
2546 (char *)"Don't expand when spawned",(char *)"Pattern Odds reset when Expanding",(char *)"Don't 'expand' without orbiters",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2547 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2548 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2549 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2550 (char *)"Transformation Inv Time:",(char *)"Shot chance (1/N per frame):",(char *)"Firing cooldown:",(char *)"Inner Eyes Firing Pattern:",
2551 (char *)"Warning Spins:",(char *)"Stays still:",(char *)"Outer Ring Loss Speed Boost:",(char *)"Inner Ring Loss Speed Boost:",
2552 (char *)"Can Fire:",(char *)"Can Expand:",(char *)"Inner Eye HP:",(char *)"Center Eye Firing Pattern:",
2553 (char *)"Outer Eye Radius:",(char *)"Inner Eye Radius:",(char *)"Outer Eye Expand Radius:",(char *)"Inner Eye Expand Radius:",
2554 }
2555 },
2556 {
2557 eePROJECTILE, { "Shot Type:", NULL, "Shot Attr. 1:", "Shot Attr. 2:", NULL, NULL, NULL, NULL, NULL, NULL },
2558 { (void*)&walkmisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2559 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2560 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2561 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2562 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2563 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2564 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2565 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2566 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2567 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2568 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2569 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2570 }
2571 },
2572 {
2573 eeGHOMA, { "Shot Type:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2574 { (void*)&gohmamisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2575 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2576 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2577 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2578 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2579 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2580 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2581 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2582 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2583 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2584 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2585 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2586 }
2587 },
2588 {
2589 eeAQUA, { "Side:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2590 { (void*)&aquamisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2591 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2592 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2593 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2594 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2595 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2596 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2597 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2598 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2599 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2600 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2601 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2602 }
2603 },
2604 {
2605 eeMANHAN, { "Frame rate:", "Size:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2606 { NULL, (void*)&manhandlamisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2607 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2608 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2609 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"Each segment drops items",(char *)"BFlags[6]:",
2610 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2611 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2612 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2613 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2614 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2615 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2616 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2617 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2618 }
2619 },
2620 {
2621 eeLANM, { "Segments:", "Segment Lag:", "Item per segment:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2622 { NULL, NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2623 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2624 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2625 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Each segment drops items",
2626 (char *)"BFlags[6]:",(char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",
2627 (char *)"Fast Drawing",(char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2628 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2629 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2630 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2631 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2632 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2633 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2634 }
2635 },
2636 {
2637 eeMOLD, { "Segments:", "Item per segment:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2638 { NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2639 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2640 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2641 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"Obeys Spawn Points",(char *)"Each segment drops items",(char *)"BFlags[6]:",
2642 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2643 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2644 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2645 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2646 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2647 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2648 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2649 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2650 }
2651 },
2652 {
2653 eeWIZZ, { "Walk Style:", "Shot Type:", "Shot Attr. 1:", "Solid Combos OK:", "Teleport Delay:", NULL, NULL, NULL, NULL, NULL },
2654 { (void*)&wizzrobemisc1_list, (void*)&wizzrobemisc2_list, NULL, &yesnomisc_list, NULL, NULL, NULL, NULL, NULL, NULL, //10
2655 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2656 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2657 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"Old Windrobe teleport",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2658 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2659 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2660 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2661 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2662 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2663 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2664 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2665 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2666 }
2667 },
2668 {
2669 eeDONGO,{ NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Type :" },
2670 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&dodongomisc10_list, //10
2671 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2672 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2673 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2674 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2675 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2676 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2677 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2678 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2679 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2680 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2681 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2682 }
2683 },
2684 {
2685 eeKEESE, { "Walk Style:", "Death Type:", "Enemy ID:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2686 { (void*)&keesemisc1_list, (void*)&keesemisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2687 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2688 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2689 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2690 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2691 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2692 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2693 (char *)"This Item Dispels Invisibility:",(char *)"Landing Chance (1/N):",(char *)"Landing Cooldown:",(char *)"Halt Duration",
2694 (char *)"Acceleration Frame Interval:",(char *)"Acceleration Step Modifier:",(char *)"Spawn Step:",(char *)"Tribble Timer:",
2695 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2696 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2697 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2698 }
2699 },
2700 {
2701 eeTEK, { "1/n jump start:", "1/n jump cont.:", "Jump Z velocity:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2702 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2703 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2704 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2705 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2706 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2707 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2708 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2709 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2710 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2711 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2712 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2713 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2714 }
2715 },
2716 {
2717 eeLEV, { "Emerge style:", "Submerged CSet:", "Emerging step:", NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2718 { (void*)&leevermisc1_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2719 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2720 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2721 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2722 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2723 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2724 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2725 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2726 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2727 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2728 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2729 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2730 }
2731 },
2732 {
2733 eeWALLM,{ "Fixed distance:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2734 { (void*)&noyesmisc_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2735 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2736 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2737 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2738 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2739 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2740 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2741 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2742 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2743 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2744 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2745 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2746 }
2747 },
2748 {
2749 eeTRAP, { "Direction:", "Move Style:", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2750 { (void*)&trapmisc1_list, (void*)&trapmisc2_list, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2751 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2752 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2753 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2754 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2755 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2756 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2757 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2758 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2759 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2760 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2761 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2762 }
2763 },
2764 {
2765 eeROCK, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Rock size:" },
2766 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&rockmisc1_list, //10
2767 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2768 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2769 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2770 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2771 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2772 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2773 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2774 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2775 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2776 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2777 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2778 }
2779 },
2780 {
2781 eeNONE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Boss Death Trigger:" },
2782 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, (void*)&yesnomisc_list, //10
2783 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2784 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2785 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2786 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2787 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2788 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2789 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2790 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2791 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2792 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2793 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2794 }
2795 },
2796 {
2797 eeGHINI, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2798 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2799 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2800 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2801 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2802 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2803 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2804 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2805 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Misc Attr. 15:",(char *)"Halt Duration",
2806 (char *)"Acceleration Factor",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2807 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2808 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2809 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2810 }
2811 },
2812 {
2813 eePEAHAT, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2814 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2815 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2816 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2817 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2818 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2819 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2820 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2821 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Misc Attr. 15:",(char *)"Halt Duration",
2822 (char *)"Acceleration Factor",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2823 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2824 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2825 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2826 }
2827 },
2828 {
2829 eeZORA, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2830 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2831 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2832 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2833 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"Lava Only",(char *)"Lava and Water",(char *)"Shallow Water",
2834 (char *)"Doesn't regenerate health",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2835 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2836 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2837 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2838 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2839 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2840 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2841 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2842 }
2843 },
2844 {
2845 eeSPINTILE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2846 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2847 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2848 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2849 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2850 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2851 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2852 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2853 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2854 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2855 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2856 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2857 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2858 }
2859 },
2860 {
2861 eeFIRE, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2862 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2863 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2864 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2865 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2866 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2867 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2868 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2869 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2870 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2871 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2872 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2873 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2874 }
2875 },
2876 {
2877 eeOTHER, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2878 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2879 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2880 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2881 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2882 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2883 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2884 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2885 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2886 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2887 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2888 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2889 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2890 }
2891 },
2892 {
2893 eeSCRIPT01, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2894 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2895 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2896 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2897 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2898 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2899 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2900 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2901 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2902 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2903 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2904 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2905 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2906 }
2907 },
2908 {
2909 eeSCRIPT02, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2910 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2911 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2912 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2913 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2914 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2915 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2916 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2917 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2918 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2919 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2920 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2921 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2922 }
2923 },
2924 {
2925 eeSCRIPT03, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2926 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2927 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2928 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2929 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2930 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2931 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2932 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2933 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2934 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2935 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2936 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2937 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2938 }
2939 },
2940 {
2941 eeSCRIPT04, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2942 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2943 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2944 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2945 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2946 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2947 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2948 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2949 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2950 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2951 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2952 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2953 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2954 }
2955 },
2956 {
2957 eeSCRIPT05, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2958 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2959 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2960 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2961 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2962 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2963 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2964 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2965 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2966 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2967 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2968 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2969 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2970 }
2971 },
2972 {
2973 eeSCRIPT06, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2974 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2975 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2976 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2977 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2978 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2979 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2980 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2981 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2982 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2983 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
2984 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
2985 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
2986 }
2987 },
2988 {
2989 eeSCRIPT07, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
2990 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
2991 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
2992 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
2993 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
2994 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
2995 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
2996 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
2997 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
2998 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
2999 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3000 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3001 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3002 }
3003 },
3004 {
3005 eeSCRIPT08, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3006 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3007 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3008 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3009 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3010 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3011 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3012 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3013 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3014 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3015 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3016 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3017 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3018 }
3019 },
3020 {
3021 eeSCRIPT09, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3022 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3023 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3024 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3025 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3026 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3027 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3028 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3029 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3030 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3031 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3032 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3033 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3034 }
3035 },
3036 {
3037 eeSCRIPT10, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3038 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3039 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3040 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3041 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3042 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3043 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3044 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3045 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3046 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3047 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3048 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3049 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3050 }
3051 },
3052 {
3053 eeSCRIPT11, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3054 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3055 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3056 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3057 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3058 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3059 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3060 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3061 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3062 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3063 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3064 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3065 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3066 }
3067 },
3068 {
3069 eeSCRIPT12, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3070 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3071 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3072 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3073 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3074 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3075 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3076 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3077 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3078 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3079 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3080 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3081 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3082 }
3083 },
3084 {
3085 eeSCRIPT13, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3086 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3087 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3088 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3089 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3090 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3091 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3092 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3093 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3094 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3095 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3096 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3097 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3098 }
3099 },
3100 {
3101 eeSCRIPT14, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3102 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3103 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3104 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3105 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3106 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3107 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3108 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3109 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3110 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3111 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3112 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3113 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3114 }
3115 },
3116 {
3117 eeSCRIPT15, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3118 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3119 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3120 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3121 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3122 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3123 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3124 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3125 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3126 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3127 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3128 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3129 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3130 }
3131 },
3132 {
3133 eeSCRIPT16, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3134 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3135 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3136 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3137 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3138 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3139 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3140 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3141 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3142 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3143 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3144 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3145 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3146 }
3147 },
3148 {
3149 eeSCRIPT17, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3150 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3151 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3152 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3153 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3154 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3155 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3156 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3157 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3158 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3159 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3160 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3161 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3162 }
3163 },
3164 {
3165 eeSCRIPT18, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3166 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3167 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3168 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3169 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3170 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3171 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3172 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3173 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3174 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3175 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3176 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3177 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3178 }
3179 },
3180 {
3181 eeSCRIPT19, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3182 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3183 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3184 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3185 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3186 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3187 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3188 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3189 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3190 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3191 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3192 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3193 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3194 }
3195 },
3196 {
3197 eeSCRIPT20, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3198 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3199 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3200 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3201 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3202 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3203 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3204 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3205 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3206 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3207 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3208 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3209 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3210 }
3211 },
3212 {
3213 eeFFRIENDLY01, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3214 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3215 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3216 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3217 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3218 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3219 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3220 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3221 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3222 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3223 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3224 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3225 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3226 }
3227 },
3228 {
3229 eeFFRIENDLY02, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3230 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3231 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3232 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3233 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3234 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3235 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3236 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3237 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3238 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3239 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3240 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3241 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3242 }
3243 },
3244 {
3245 eeFFRIENDLY03, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3246 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3247 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3248 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3249 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3250 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3251 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3252 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3253 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3254 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3255 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3256 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3257 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3258 }
3259 },
3260 {
3261 eeFFRIENDLY04, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3262 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3263 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3264 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3265 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3266 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3267 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3268 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3269 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3270 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3271 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3272 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3273 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3274 }
3275 },
3276 {
3277 eeFFRIENDLY05, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3278 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3279 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3280 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3281 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3282 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3283 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3284 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3285 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3286 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3287 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3288 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3289 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3290 }
3291 },
3292 {
3293 eeFFRIENDLY06, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3294 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3295 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3296 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3297 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3298 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3299 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3300 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3301 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3302 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3303 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3304 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3305 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3306 }
3307 },
3308 {
3309 eeFFRIENDLY07, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3310 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3311 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3312 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3313 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3314 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3315 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3316 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3317 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3318 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3319 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3320 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3321 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3322 }
3323 },
3324 {
3325 eeFFRIENDLY08, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3326 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3327 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3328 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3329 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3330 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3331 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3332 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3333 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3334 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3335 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3336 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3337 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3338 }
3339 },
3340 {
3341 eeFFRIENDLY09, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3342 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3343 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3344 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3345 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3346 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3347 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3348 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3349 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3350 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3351 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3352 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3353 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3354 }
3355 },
3356 {
3357 eeFFRIENDLY10, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3358 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3359 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3360 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3361 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3362 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3363 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3364 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3365 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3366 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3367 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3368 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3369 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3370 }
3371 },
3372 {
3373 eeGUY, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3374 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3375 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3376 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3377 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Doesn't always return",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3378 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3379 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3380 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3381 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3382 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3383 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3384 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3385 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3386 }
3387 },
3388 {
3389 eeGANON, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
3390 , NULL, NULL },
3391 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3392 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3393 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3394 { (char *)"Visible if the player has an Level 2 (or higher) Amulet item.",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"Uses Full Hitbox",(char *)"BFlags[3]:",
3395 (char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",(char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",
3396 (char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",(char *)"Use Editor ",(char *)"When Not Invisible, Also Show Weapon Shots.",(char *)"Draw Cloaked When Not Invisible" },
3397 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3398 (char *)"This Item Dispels Invisibility:",(char *)"Death Shot Item ID",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3399 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3400 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3401 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3402 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3403 }
3404 },
3405 {
3406 -1, { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL },
3407 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //10
3408 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, //21
3409 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, //32
3410 { (char *)"Enemy is Completely Invisible",(char *)"Item Specified in Attributes 13 Dispels Invisibility",(char *)"BFlags[2]:",(char *)"Draw Invisible as Cloaked",(char *)"BFlags[4]:",(char *)"BFlags[5]:",(char *)"BFlags[6]:",
3411 (char *)"BFlags[7]:",(char *)"BFlags[8]:",(char *)"BFlags[9]:",(char *)"BFlags[10]:",(char *)"Toggle Move Offscreen",(char *)"Fast Drawing",
3412 (char *)"Ignore Sideview Ladders/Platforms",(char *)"Move Off-Grid (WIP)",(char *)"Render Cloaked Instead of VISIBLE" },
3413 { NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,(char*)"Misc Attr. 11:",(char*)"Misc Attr. 12:",
3414 (char *)"This Item Dispels Invisibility:",(char *)"Misc Attr. 14:",(char *)"Transform Effect:",(char *)"Transform Into Enemy:",
3415 (char *)"Transformation Inv Time:",(char *)"Misc Attr. 18:",(char *)"Misc Attr. 19:",(char *)"Misc Attr. 20:",
3416 (char *)"Misc Attr. 21:",(char *)"Misc Attr. 22:",(char *)"Misc Attr. 23:",(char *)"Misc Attr. 24:",
3417 (char *)"Misc Attr. 25:",(char *)"Misc Attr. 26:",(char *)"Misc Attr. 27:",(char *)"Misc Attr. 28:",
3418 (char *)"Misc Attr. 29:",(char *)"Misc Attr. 30:",(char *)"Misc Attr. 31:",(char *)"Misc Attr. 32:",
3419 }
3420 }
3421 };
3422
3423 static std::map<int32_t, EnemyNameInfo *> *enamemap = NULL;
3424
3425 std::map<int32_t, EnemyNameInfo *> *getEnemyNameMap()
3426 {
3427 if(enamemap == NULL)
3428 {
3429 enamemap = new std::map<int32_t, EnemyNameInfo *>();
3430
3431 for(int32_t i=0;; i++)
3432 {
3433 EnemyNameInfo *inf = &enameinf[i];
3434
3435 if(inf->family == -1)
3436 break;
3437
3438 (*enamemap)[inf->family] = inf;
3439 }
3440 }
3441
3442 return enamemap;
3443 }
3444
3445 const char *npcscriptdroplist(int32_t index, int32_t *list_size)
3446 {
3447 if(index<0)
3448 {
3449 *list_size = binpcs_cnt;
3450 return NULL;
3451 }
3452
3453 return binpcs[index].first.c_str();
3454 }
3455 9 ListData npcscript_list(npcscriptdroplist, &font);
3456
3457 9 static ListData itemset_list(itemsetlist, &font);
3458 9 static ListData eneanim_list(eneanimlist, &font);
3459 9 static ListData enetype_list(enetypelist, &font);
3460 9 static ListData eweapon_list(eweaponlist, &font);
3461
3462
3463 const char *eweaponscriptdroplist(int32_t index, int32_t *list_size)
3464 {
3465 if(index<0)
3466 {
3467 *list_size = bieweapons_cnt;
3468 return NULL;
3469 }
3470
3471 return bieweapons[index].first.c_str();
3472 }
3473
3474
3475 //droplist like the dialog proc, naming scheme for this stuff is awful...
3476 9 ListData eweaponscript_list(eweaponscriptdroplist, &a4fonts[font_pfont]);
3477
3478
3479 9 static ListData walkerspawn_list(walkerspawnlist, &font);
3480
3481 9 static ListData sfx__list(sfxlist, &font);
3482
3483 /*
3484 static DIALOG enedata_dlg[] =
3485 {
3486 { jwin_win_proc, 0, 0, 320, 240, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
3487 { jwin_tab_proc, 4, 24, 312, 192, 0, 0, 0, 0, 0, 0, (void *) enedata_tabs, NULL, (void *)enedata_dlg },
3488 //2
3489 { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3490 { d_ecstile_proc, 52, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3491 { d_ecstile_proc, 88, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, NULL },
3492 //5
3493 { jwin_button_proc, 50, 220, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
3494 { jwin_button_proc, 130, 220, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
3495 //7
3496 { jwin_text_proc, 21, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Old", NULL, NULL },
3497 { jwin_text_proc, 44, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Special", NULL, NULL },
3498 { jwin_text_proc, 90, 46, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "New", NULL, NULL },
3499 { jwin_text_proc, 6, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3500 { jwin_text_proc, 6, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3501 //12
3502 { jwin_text_proc, 42, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3503 { jwin_text_proc, 42, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3504 { jwin_text_proc, 78, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3505 { jwin_text_proc, 78, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3506 //16
3507 { jwin_text_proc, 114, 54, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
3508 { jwin_text_proc, 114, 72, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HP:", NULL, NULL },
3509 { jwin_text_proc, 114, 90, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Damage:", NULL, NULL },
3510 { jwin_text_proc, 114, 108, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W. Damage:", NULL, NULL },
3511 { jwin_text_proc, 140, 126, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hunger:", NULL, NULL },
3512 //21
3513 { jwin_text_proc, 210, 72, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Random Rate:", NULL, NULL },
3514 { jwin_text_proc, 210, 90, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Halt Rate:", NULL, NULL },
3515 { jwin_text_proc, 210, 108, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Homing Factor:", NULL, NULL },
3516 { jwin_text_proc, 210, 126, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Step Speed:", NULL, NULL },
3517 //25
3518 { jwin_text_proc, 8, 126, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon:", NULL, NULL },
3519 { jwin_text_proc, 8, 144, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Type:", NULL, NULL },
3520 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "O. Anim:", NULL, NULL },
3521 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "E. Anim:", NULL, NULL },
3522 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Item Set:", NULL, NULL },
3523 //30
3524 { jwin_edit_proc, 16, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3525 { jwin_edit_proc, 16, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3526 { jwin_edit_proc, 52, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3527 { jwin_edit_proc, 52, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3528 { jwin_edit_proc, 88, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3529 { jwin_edit_proc, 88, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3530 //36
3531 { jwin_edit_proc, 144, 50, 166, 16, vc(12), vc(1), 0, 0, 63, 0, NULL, NULL, NULL },
3532 { jwin_edit_proc, 166, 68, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3533 { jwin_edit_proc, 166, 86, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3534 { jwin_edit_proc, 166, 104, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3535 { jwin_edit_proc, 186, 122, 20, 16, vc(12), vc(1), 0, 0, 1, 0, NULL, NULL, NULL },
3536 //41
3537 { jwin_edit_proc, 280, 68, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3538 { jwin_edit_proc, 280, 86, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3539 { jwin_edit_proc, 280, 104, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3540 { jwin_edit_proc, 280, 122, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3541 //45
3542 { jwin_droplist_proc, 51, 122, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eweapon_list, NULL, NULL },
3543 { jwin_droplist_proc, 51, 140, 110, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 0, 0, (void *) &enetype_list, NULL, NULL },
3544 { jwin_droplist_proc, 51, 158, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3545 { jwin_droplist_proc, 51, 176, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3546 { jwin_droplist_proc, 51, 194, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &itemset_list, NULL, NULL },
3547 //50
3548 { d_dummy_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3549 { jwin_text_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Pal CSet:", NULL, NULL },
3550 { d_dummy_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3551 { jwin_edit_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3552 //54
3553 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 1:", NULL, NULL },
3554 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 2:", NULL, NULL },
3555 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 3:", NULL, NULL },
3556 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 4:", NULL, NULL },
3557 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 5:", NULL, NULL },
3558 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 6:", NULL, NULL },
3559 { jwin_text_proc, 160, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 7:", NULL, NULL },
3560 { jwin_text_proc, 160, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 8:", NULL, NULL },
3561 { jwin_text_proc, 160, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 9:", NULL, NULL },
3562 { jwin_text_proc, 160, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 10:", NULL, NULL },
3563 //64
3564 { jwin_edit_proc, 86, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3565 { jwin_edit_proc, 86, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3566 { jwin_edit_proc, 86, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3567 { jwin_edit_proc, 86, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3568 { jwin_edit_proc, 86, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3569 { jwin_edit_proc, 86, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3570 { jwin_edit_proc, 242, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3571 { jwin_edit_proc, 242, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3572 { jwin_edit_proc, 242, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3573 { jwin_edit_proc, 242, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3574 //74
3575 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Damaged By Power 0 Weapons", NULL, NULL },
3576 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Invisible", NULL, NULL },
3577 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Never Returns After Death", NULL, NULL },
3578 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Doesn't Count As Beatable Enemy", NULL, NULL },
3579 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3580 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3581 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3582 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3583 //82
3584 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3585 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3586 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3587 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3588 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3589 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3590 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3591 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3592 //90
3593 { d_dummy_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3594 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3595 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3596 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3597 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3598 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3599 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3600 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3601 //98
3602 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Front", NULL, NULL },
3603 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Left", NULL, NULL },
3604 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Right", NULL, NULL },
3605 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Back", NULL, NULL },
3606 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Hammer Can Break Shield", NULL, NULL },
3607 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shield Is Mirrored", NULL, NULL },
3608 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3609 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Only Be Seen By Lens Of Truth", NULL, NULL },
3610 //106
3611 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flashing", NULL, NULL },
3612 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Zora\" Screen Flag", NULL, NULL },
3613 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Falling Rocks\" Screen Flag", NULL, NULL },
3614 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Corner Traps\" Screen Flag", NULL, NULL },
3615 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Horz Trap\" Combo Type/Flag", NULL, NULL },
3616 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Vert Trap\" Combo Type/Flag", NULL, NULL },
3617 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"4-Way Trap\" Combo Type/Flag", NULL, NULL },
3618 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"LR Trap\" Combo Type/Flag", NULL, NULL },
3619 //114
3620 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"UD Trap\" Combo Type/Flag", NULL, NULL },
3621 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Middle Traps\" Screen Flag", NULL, NULL },
3622 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Statue Fire\" Screen Flag", NULL, NULL },
3623 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Armos\" Combo Type", NULL, NULL },
3624 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Grave\" Combo Type", NULL, NULL },
3625 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Ganon\" Room Type", NULL, NULL },
3626 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flickering", NULL, NULL },
3627 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Translucent", NULL, NULL },
3628 //122
3629 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3630 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3631 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3632 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3633 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3634 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3635 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3636 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3637 //130
3638 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3639 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3640 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3641 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3642 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3643 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3644 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3645 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3646 //138
3647 { jwin_text_proc, 240, 162, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3648 { jwin_text_proc, 240, 180, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3649 { jwin_edit_proc, 280, 158, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3650 { jwin_edit_proc, 280, 176, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3651 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3652 { jwin_check_proc, 165, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Use Pal CSet", NULL, NULL },
3653 //143 - note: these are defenses 0-16, 17 is at 191
3654 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Boomerang Defense:", NULL, NULL },
3655 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Bomb Defense:", NULL, NULL },
3656 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Super Bomb Defense:", NULL, NULL },
3657 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Arrow Defense:", NULL, NULL },
3658 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Fire Defense:", NULL, NULL },
3659 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Wand Melee Defense:", NULL, NULL },
3660 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Magic Defense:", NULL, NULL },
3661 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hookshot Defense:", NULL, NULL },
3662 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hammer Defense:", NULL, NULL },
3663 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Defense:", NULL, NULL },
3664 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Beam Defense:", NULL, NULL },
3665 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Beam Defense:", NULL, NULL },
3666 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Magic Defense:", NULL, NULL },
3667 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Fireball Defense:", NULL, NULL },
3668 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Rock Defense:", NULL, NULL },
3669 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Stomp Boots Defense:", NULL, NULL },
3670 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Byrna Beam Defense:", NULL, NULL },
3671 //161
3672 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3673 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3674 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3675 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3676 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3677 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3678 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3679 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3680 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3681 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3682 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3683 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3684 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3685 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3686 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3687 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3688 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3689 { jwin_button_proc, 255, 54-4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "Set All", NULL, NULL },
3690 //179
3691 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "BG Sound:", NULL, NULL },
3692 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hit Sound:", NULL, NULL },
3693 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sound:", NULL, NULL },
3694 //182
3695 { jwin_droplist_proc, 86, 158, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3696 { jwin_droplist_proc, 86, 176, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3697 { jwin_droplist_proc, 86, 194, 140, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3698 { jwin_text_proc, 6, 184, 95, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Animation:", NULL, NULL },
3699 { jwin_droplist_proc, 86, 180, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &walkerspawn_list, NULL, NULL },
3700 { jwin_text_proc, 160, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
3701 { jwin_text_proc, 160, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
3702 { jwin_edit_proc, 242, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3703 { jwin_edit_proc, 242, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3704
3705 // 191
3706 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Script Weapon Defense:", NULL, NULL },
3707 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3708 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
3709 };
3710 */
3711
3712 static DIALOG enedata_dlg[] =
3713 {
3714 9 { jwin_win_proc, 0, 0, 320, 260, vc(14), vc(1), 0, D_EXIT, 0, 0, NULL, NULL, NULL },
3715 9 { jwin_tab_proc, 4, 17, 312, 220, 0, 0, 0, 0, 0, 0, (void *) enedata_tabs, NULL, (void *)enedata_dlg },
3716 //2
3717 ////tab procs must be listed prior to their elements!
3718 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_defence_tabs, NULL, (void *) enedata_dlg },
3719 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_basic_tabs, NULL, (void *) enedata_dlg },
3720 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_flags_tabs, NULL, (void *) enedata_dlg },
3721 // { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
3722
3723 //5
3724 9 { d_dummy_proc, 9904, 32, 1, 1, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3725 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_graphics_tabs, NULL, (void *) enedata_dlg },
3726
3727 //Attributes Tab
3728 // { jwin_button_proc, 86, 220, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
3729 // { jwin_button_proc, 166, 220, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
3730 //7
3731 9 { jwin_text_proc, 21, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Old", NULL, NULL },
3732 9 { jwin_text_proc, 53, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Special", NULL, NULL },
3733 9 { jwin_text_proc, 92, 51, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "New", NULL, NULL },
3734 9 { jwin_text_proc, 6, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3735 9 { jwin_text_proc, 6, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3736 //12
3737 9 { jwin_text_proc, 42, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3738 9 { jwin_text_proc, 42, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3739 9 { jwin_text_proc, 78, 90, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W:", NULL, NULL },
3740 9 { jwin_text_proc, 78, 108, 10, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "H:", NULL, NULL },
3741 //16
3742 9 { jwin_text_proc, 118, 53, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Name:", NULL, NULL },
3743 9 { jwin_text_proc, 114, 72, 30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HP:", NULL, NULL },
3744 9 { jwin_text_proc, 114, 90, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Damage:", NULL, NULL },
3745 9 { jwin_text_proc, 114, 108, 50, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "W. Damage:", NULL, NULL },
3746 9 { jwin_text_proc, 140, 126, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hunger:", NULL, NULL },
3747 //21
3748 9 { jwin_text_proc, 210, 72, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Random Rate:", NULL, NULL },
3749 9 { jwin_text_proc, 210, 90, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Halt Rate:", NULL, NULL },
3750 9 { jwin_text_proc, 210, 108, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Homing Factor:", NULL, NULL },
3751 9 { jwin_text_proc, 210, 126, 60, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Step Speed:", NULL, NULL },
3752 //25
3753 9 { jwin_text_proc, 8, 126, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon:", NULL, NULL },
3754 9 { jwin_text_proc, 8, 144, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Type:", NULL, NULL },
3755 9 { jwin_text_proc, 8, 162, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "O. Anim:", NULL, NULL },
3756 9 { jwin_text_proc, 8, 180, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "E. Anim:", NULL, NULL },
3757 9 { jwin_text_proc, 8, 198, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Item Set:", NULL, NULL },
3758 //30
3759 9 { jwin_edit_proc, 16, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3760 9 { jwin_edit_proc, 16, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3761 9 { jwin_edit_proc, 52, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3762 9 { jwin_edit_proc, 52, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3763 9 { jwin_edit_proc, 88, 86, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3764 9 { jwin_edit_proc, 88, 104, 22, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3765 //36
3766 9 { jwin_edit_proc, 144, 50, 166, 16, vc(12), vc(1), 0, 0, 63, 0, NULL, NULL, NULL },
3767 9 { jwin_edit_proc, 166, 68, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3768 9 { jwin_edit_proc, 166, 86, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3769 9 { jwin_edit_proc, 166, 104, 40, 16, vc(12), vc(1), 0, 0, 5, 0, NULL, NULL, NULL },
3770 9 { jwin_edit_proc, 186, 122, 20, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3771 //41
3772 9 { jwin_edit_proc, 280, 68, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3773 9 { jwin_edit_proc, 280, 86, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3774 9 { jwin_edit_proc, 280, 104, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3775 9 { jwin_edit_proc, 280, 122, 30, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
3776 //45
3777 9 { jwin_droplist_proc, 51, 122, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eweapon_list, NULL, NULL },
3778 9 { jwin_droplist_proc, 51, 140, 110, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 0, 0, (void *) &enetype_list, NULL, NULL },
3779 9 { jwin_droplist_proc, 51, 158, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3780 9 { jwin_droplist_proc, 51, 176, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &eneanim_list, NULL, NULL },
3781 9 { jwin_droplist_proc, 51, 194, 184, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &itemset_list, NULL, NULL },
3782 //50
3783 9 { d_dummy_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3784 9 { jwin_text_proc, 240, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Pal CSet:", NULL, NULL },
3785 9 { d_dummy_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3786 9 { jwin_edit_proc, 280, 140, 30, 16, vc(12), vc(1), 0, 0, 2, 0, NULL, NULL, NULL },
3787 //54
3788 //The tab for these ( npc->Attributes[] ) means that fewer fit. THey need to be rearranged. -Z
3789 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 1:", NULL, NULL },
3790 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 2:", NULL, NULL },
3791 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 3:", NULL, NULL },
3792 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 4:", NULL, NULL },
3793 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 5:", NULL, NULL },
3794 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 6:", NULL, NULL },
3795 9 { jwin_text_proc, 160, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 7:", NULL, NULL },
3796 9 { jwin_text_proc, 120+40, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 8:", NULL, NULL },
3797 9 { jwin_text_proc, 120+40, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 9:", NULL, NULL },
3798 9 { jwin_text_proc, 120+40, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 10:", NULL, NULL },
3799 //64 : Misc Attribute boxes.
3800 9 { jwin_edit_proc, 86, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3801 9 { jwin_edit_proc, 86, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3802 9 { jwin_edit_proc, 86, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3803 9 { jwin_edit_proc, 86, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3804 9 { jwin_edit_proc, 86, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3805 9 { jwin_edit_proc, 86, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3806 9 { jwin_edit_proc, 242, 50, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3807 9 { jwin_edit_proc, 242, 68, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3808 9 { jwin_edit_proc, 242, 86, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3809 9 { jwin_edit_proc, 242, 104, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3810 //74
3811 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Damaged By Power 0 Weapons", NULL, NULL },
3812 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Does not draw", NULL, NULL },
3813 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Never Returns After Death", NULL, NULL },
3814 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Doesn't Count As Beatable Enemy", NULL, NULL },
3815 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3816 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3817 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3818 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3819 //82
3820 9 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3821 9 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3822 9 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3823 9 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3824 9 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3825 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3826 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3827 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3828 //90
3829 9 { d_dummy_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3830 9 { d_dummy_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3831 9 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3832 9 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3833 9 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3834 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3835 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3836 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3837 //98
3838 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Front", NULL, NULL },
3839 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Left", NULL, NULL },
3840 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded On Right", NULL, NULL },
3841 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shielded In Back", NULL, NULL },
3842 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Hammer Can Break Shield", NULL, NULL },
3843 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Shield Is Mirrored", NULL, NULL },
3844 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Unused", NULL, NULL },
3845 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Only Be Seen By Lens Of Truth", NULL, NULL },
3846 //106
3847 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flashing", NULL, NULL },
3848 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Zora\" Screen Flag", NULL, NULL },
3849 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Falling Rocks\" Screen Flag", NULL, NULL },
3850 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Corner Traps\" Screen Flag", NULL, NULL },
3851 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Horz Trap\" Combo Type/Flag", NULL, NULL },
3852 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Vert Trap\" Combo Type/Flag", NULL, NULL },
3853 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"4-Way Trap\" Combo Type/Flag", NULL, NULL },
3854 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"LR Trap\" Combo Type/Flag", NULL, NULL },
3855 //114
3856 9 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"UD Trap\" Combo Type/Flag", NULL, NULL },
3857 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Middle Traps\" Screen Flag", NULL, NULL },
3858 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Statue Fire\" Screen Flag", NULL, NULL },
3859 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Armos\" Combo Type", NULL, NULL },
3860 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Grave\" Combo Type", NULL, NULL },
3861 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Spawned By \"Ganon\" Room Type", NULL, NULL },
3862 9 { jwin_check_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Flickering", NULL, NULL },
3863 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Is Translucent", NULL, NULL },
3864 //122
3865 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3866 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3867 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3868 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3869 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3870 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3871 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3872 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3873 //130
3874 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3875 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3876 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3877 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3878 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3879 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3880 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3881 9 { d_dummy_proc, 160, 40, 0, 8, vc(15), vc(1), 0, 0, 0, 0, NULL, NULL, NULL },
3882 //138
3883 9 { jwin_text_proc, 240, 162, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3884 9 { jwin_text_proc, 240, 180, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "F. Rate:", NULL, NULL },
3885 9 { jwin_edit_proc, 280, 158, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3886 9 { jwin_edit_proc, 280, 176, 30, 16, vc(12), vc(1), 0, 0, 3, 0, NULL, NULL, NULL },
3887 //142 timer_proc
3888 9 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
3889 9 { jwin_check_proc, 165, 144, 40, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Use Pal CSet", NULL, NULL },
3890 //144 - note: these are defenses 0-16, 17 is at 191
3891 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Boomerang Defense:", NULL, NULL },
3892 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Bomb Defense:", NULL, NULL },
3893 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Super Bomb Defense:", NULL, NULL },
3894 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Arrow Defense:", NULL, NULL },
3895 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Fire Defense:", NULL, NULL },
3896 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Wand Melee Defense:", NULL, NULL },
3897 9 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Magic Defense:", NULL, NULL },
3898 9 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hookshot Defense:", NULL, NULL },
3899 9 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hammer Defense:", NULL, NULL },
3900 9 { jwin_text_proc, 6, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Defense:", NULL, NULL },
3901 9 { jwin_text_proc, 6, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Sword Beam Defense:", NULL, NULL },
3902 9 { jwin_text_proc, 6, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Beam Defense:", NULL, NULL },
3903 9 { jwin_text_proc, 6, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Magic Defense:", NULL, NULL },
3904 9 { jwin_text_proc, 6, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Fireball Defense:", NULL, NULL },
3905 9 { jwin_text_proc, 6, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Refl. Rock Defense:", NULL, NULL },
3906 9 { jwin_text_proc, 6, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Stomp Boots Defense:", NULL, NULL },
3907 9 { jwin_text_proc, 6, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Byrna Beam Defense:", NULL, NULL },
3908 //161
3909 9 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3910 9 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3911 9 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3912 9 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3913 9 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3914 9 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3915 9 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3916 9 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3917 9 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3918 9 { jwin_droplist_proc, 126, 54-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3919 9 { jwin_droplist_proc, 126, 72-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3920 9 { jwin_droplist_proc, 126, 90-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3921 9 { jwin_droplist_proc, 126, 108-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3922 9 { jwin_droplist_proc, 126, 126-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3923 9 { jwin_droplist_proc, 126, 144-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3924 9 { jwin_droplist_proc, 126, 162-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3925 9 { jwin_droplist_proc, 126, 180-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3926 9 { jwin_button_proc, 255, 54-4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "Set All", NULL, NULL },
3927 //179
3928 9 { jwin_text_proc, 8, 161, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "BG Sound:", NULL, NULL },
3929 9 { jwin_text_proc, 8, 176, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Hit Sound:", NULL, NULL },
3930 9 { jwin_text_proc, 8, 191, 45, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sound:", NULL, NULL },
3931 //182
3932 9 { jwin_droplist_proc, 86, 157, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3933 9 { jwin_droplist_proc, 86, 172, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3934 9 { jwin_droplist_proc, 86, 187, 100, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &sfx__list, NULL, NULL },
3935 9 { jwin_text_proc, 6, 214, 95, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Animation:", NULL, NULL },
3936 9 { jwin_droplist_proc, 86, 210, 85, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &walkerspawn_list, NULL, NULL },
3937 //moved to attributes tabs
3938 9 { d_dummy_proc, 160, 126-4, 50+30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
3939 9 { d_dummy_proc, 160, 144-4, 50+30, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
3940 9 { d_dummy_proc, 242, 122-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3941 9 { d_dummy_proc, 242, 140-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3942
3943 // 191
3944 9 { jwin_text_proc, 6, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Whistle Weapon Defense:", NULL, NULL },
3945 9 { jwin_droplist_proc, 126, 198-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3946 //193 - sccript 1
3947 9 { jwin_text_proc, 6, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 1 Defense:", NULL, NULL },
3948 9 { jwin_text_proc, 6, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 2 Defense:", NULL, NULL },
3949 9 { jwin_text_proc, 6, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 3 Defense:", NULL, NULL },
3950 9 { jwin_text_proc, 6, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 4 Defense:", NULL, NULL },
3951 9 { jwin_text_proc, 6, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 5 Defense:", NULL, NULL },
3952 9 { jwin_text_proc, 6, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 6 Defense:", NULL, NULL },
3953 9 { jwin_text_proc, 6, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 7 Defense:", NULL, NULL },
3954 9 { jwin_text_proc, 6, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 8 Defense:", NULL, NULL },
3955 9 { jwin_text_proc, 6, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 9 Defense:", NULL, NULL },
3956 9 { jwin_text_proc, 6, 196, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Custom Weapon 10 Defense:", NULL, NULL },
3957 //203 script 1 pulldown
3958
3959 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
3960 9 { jwin_droplist_proc, 126, 51-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3961 9 { jwin_droplist_proc, 126, 67-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3962 9 { jwin_droplist_proc, 126, 83-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3963 9 { jwin_droplist_proc, 126, 99-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3964 9 { jwin_droplist_proc, 126, 115-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3965 9 { jwin_droplist_proc, 126, 131-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3966 9 { jwin_droplist_proc, 126, 147-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3967 9 { jwin_droplist_proc, 126, 163-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3968 9 { jwin_droplist_proc, 126, 179-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3969 9 { jwin_droplist_proc, 126, 196-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
3970 //213 HitWidth and Height
3971 9 { jwin_text_proc, 12, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "TileWidth:", NULL, NULL },
3972 9 { jwin_edit_proc, 60, 51-4, 30, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3973 9 { jwin_text_proc, 12, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "TileHeight:", NULL, NULL },
3974 9 { jwin_edit_proc, 60, 67-4, 30, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3975 9 { jwin_text_proc, 12, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitWidth:", NULL, NULL },
3976 9 { jwin_edit_proc, 60, 83-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3977 9 { jwin_text_proc, 12, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitHeight:", NULL, NULL },
3978 9 { jwin_edit_proc, 60, 99-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3979 //221 HitZHeight
3980 9 { jwin_text_proc, 12, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitZHeight:", NULL, NULL },
3981 9 { jwin_edit_proc, 60, 115-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3982 //223 HitXOffset
3983 9 { jwin_text_proc, 12, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitXOffset:", NULL, NULL },
3984 9 { jwin_edit_proc, 60, 131-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3985 //225 HitYOffset
3986 9 { jwin_text_proc, 12, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "HitYOffset:", NULL, NULL },
3987 9 { jwin_edit_proc, 60, 147-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3988 //227 HitZOffset
3989 9 { jwin_text_proc, 12, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawZOffset:", NULL, NULL },
3990 9 { jwin_edit_proc, 60, 163-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3991 //229 DrawXOffset
3992 9 { jwin_text_proc, 12, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawXOffset:", NULL, NULL },
3993 9 { jwin_edit_proc, 60, 179-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3994 //231 DrawYOffset
3995 9 { jwin_text_proc, 12, 195, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "DrawYOffset:", NULL, NULL },
3996 9 { jwin_edit_proc, 60, 195-4, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
3997 //233 'Tiles' annotation.
3998 9 { jwin_text_proc, 96, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "(Tiles)", NULL, NULL },
3999 9 { jwin_text_proc, 96, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "(Tiles)", NULL, NULL },
4000 //235 : Weapon Sprite Pulldown
4001 9 { jwin_text_proc, 9, 90-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Weapon Sprite:", NULL, NULL },
4002 9 { jwin_droplist_proc, 126, 86-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4003 // { jwin_edit_proc, 86, 189-4+12, 151, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4004 //237 HitWidth Override
4005 9 { jwin_check_proc, 94+50, 83, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4006 //238 HitHeight override
4007 9 { jwin_check_proc, 94+50, 99, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4008 //239 HitZHeight Override
4009 9 { jwin_check_proc, 94+50, 115, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4010 //240 HitXOffset override
4011 9 { jwin_check_proc, 94+50, 131, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4012 //241 HitYOffset Override
4013 9 { jwin_check_proc, 94+50, 147, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4014 //242 DrawZOffset Override
4015 9 { jwin_check_proc, 94+50, 163, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4016 //243 DrawXOffset Override
4017 9 { jwin_check_proc, 94+50, 179, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4018 //244 DrawYOffset Overrife
4019 9 { jwin_check_proc, 94+50, 195, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4020 //245 TileWidth Overrife
4021 9 { jwin_check_proc, 94+50, 51, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4022 //246 TileHeight Overrife
4023 9 { jwin_check_proc, 94+50, 67, 95, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Enable", NULL, NULL },
4024 //247, used to be 2
4025 9 { d_ecstile_proc, 16, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4026 //248 -- used to be 3
4027 9 { d_ecstile_proc, 52, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4028 //249 used to be 4
4029 9 { d_ecstile_proc, 88, 62, 20, 20, vc(11), vc(1), 0, 0, 0, 6, NULL, NULL, (void *)enedata_dlg },
4030
4031 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
4032 // 250 Movement tabs
4033 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_movement_tabs , NULL, (void *) enedata_dlg },
4034 //251 Scripts tabs
4035 9 { jwin_tab_proc, 4, 32, 312, 204, 0, 0, 0, 0, 0, 0, (void *) enemy_script_tabs , NULL, (void *) enedata_dlg },
4036 // { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4037 //252 --was 5, OK button.
4038 9 { jwin_button_proc, 86, 240, 61, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
4039 //253 -- CANCEL BUTTON
4040 9 { jwin_button_proc, 166, 240, 61, 16, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
4041 //254
4042 9 { jwin_check_proc, 6, 52, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[0]", NULL, NULL },
4043 9 { jwin_check_proc, 6, 62, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[1]", NULL, NULL },
4044 9 { jwin_check_proc, 6, 72, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[2]", NULL, NULL },
4045 9 { jwin_check_proc, 6, 82, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[3]", NULL, NULL },
4046 9 { jwin_check_proc, 6, 92, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[4]", NULL, NULL },
4047 9 { jwin_check_proc, 6, 102, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[5]", NULL, NULL },
4048 //260
4049 9 { jwin_check_proc, 6, 112, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[6]", NULL, NULL },
4050 9 { jwin_check_proc, 6, 122, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[7]", NULL, NULL },
4051 9 { jwin_check_proc, 6, 132, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[8]", NULL, NULL },
4052 9 { jwin_check_proc, 6, 142, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[9]", NULL, NULL },
4053 9 { jwin_check_proc, 6, 152, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[10]", NULL, NULL },
4054 //265
4055 9 { jwin_check_proc, 6, 162, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[11]", NULL, NULL },
4056 9 { jwin_check_proc, 6, 172, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[12]", NULL, NULL },
4057 9 { jwin_check_proc, 6, 182, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[13]", NULL, NULL },
4058 9 { jwin_check_proc, 6, 192, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[14]", NULL, NULL },
4059 9 { jwin_check_proc, 6, 202, 250, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flags[15]", NULL, NULL },
4060 //270
4061 //attributes page 1, attrib 1 to 8 move from basic tab?
4062 9 { d_dummy_proc, 9970, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[0]", NULL, NULL },
4063 9 { d_dummy_proc, 9970, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[1]", NULL, NULL },
4064 9 { d_dummy_proc, 9970, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[2]", NULL, NULL },
4065 9 { d_dummy_proc, 9970, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[3]", NULL, NULL },
4066 9 { d_dummy_proc, 9970, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[4]", NULL, NULL },
4067 9 { d_dummy_proc, 9970, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[5]", NULL, NULL },
4068 9 { d_dummy_proc, 9970, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[6]", NULL, NULL },
4069 9 { d_dummy_proc, 9970, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[7]", NULL, NULL },
4070 //278 : Misc Attribute boxes.
4071 9 { d_dummy_proc, 9906, 56, 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4072 9 { d_dummy_proc, 9906, 56+(18), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4073 9 { d_dummy_proc, 9906, 56+(18*2), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4074 9 { d_dummy_proc, 9906, 56+(18*3), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4075 9 { d_dummy_proc, 9906, 56+(18*4), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4076 9 { d_dummy_proc, 9906, 56+(18*5), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4077 9 { d_dummy_proc, 9906, 56+(18*6), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4078 9 { d_dummy_proc, 9906, 56+(18*7), 50, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4079 //286
4080 //attributes page 2, attrib 9 to 16
4081 9 { d_dummy_proc, 9970, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Attributes[8]", NULL, NULL },
4082 9 { d_dummy_proc, 9906, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Lower Attributes are on Basic->Data 2", NULL, NULL },
4083 //288
4084 9 { jwin_text_proc, 160, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 11:", NULL, NULL },
4085 9 { jwin_text_proc, 160, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 12:", NULL, NULL },
4086 //290
4087 9 { jwin_text_proc, 6, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 13:", NULL, NULL },
4088 9 { jwin_text_proc, 6, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 14:", NULL, NULL },
4089 9 { jwin_text_proc, 6, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 15:", NULL, NULL },
4090 9 { jwin_text_proc, 6, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 16:", NULL, NULL },
4091 //294 : Misc Attribute boxes.
4092 9 { d_dummy_proc, 9986, 56, 80, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4093 9 { d_dummy_proc, 9986, 56+(18), 80, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4094 //296
4095 9 { jwin_edit_proc, 242, 122, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4096 9 { jwin_edit_proc, 242, 140, 65, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4097 //298
4098 9 { jwin_edit_proc, 126, 56, 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4099 9 { jwin_edit_proc, 126, 56+(18), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4100 9 { jwin_edit_proc, 126, 56+(18*2), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4101 9 { jwin_edit_proc, 126, 56+(18*3), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4102 //302
4103 //attributes page 3, attrib 17 to 24
4104 9 { jwin_text_proc, 6, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 17:", NULL, NULL },
4105 9 { jwin_text_proc, 6, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 18:", NULL, NULL },
4106 9 { jwin_text_proc, 6, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 19:", NULL, NULL },
4107 9 { jwin_text_proc, 6, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 20:", NULL, NULL },
4108 9 { jwin_text_proc, 6, 58+(18*8), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 21:", NULL, NULL },
4109 9 { jwin_text_proc, 6, 58+(18*9), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 22:", NULL, NULL },
4110 //308
4111 9 { jwin_text_proc, 6, 58, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 23:", NULL, NULL },
4112 9 { jwin_text_proc, 6, 58+(18), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 24:", NULL, NULL },
4113 //310 : Misc Attribute boxes.
4114 9 { jwin_edit_proc, 126, 56+(18*4), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4115 9 { jwin_edit_proc, 126, 56+(18*5), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4116 9 { jwin_edit_proc, 126, 56+(18*6), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4117 9 { jwin_edit_proc, 126, 56+(18*7), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4118 9 { jwin_edit_proc, 126, 56+(18*8), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4119 9 { jwin_edit_proc, 126, 56+(18*9), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4120 //316
4121 9 { jwin_edit_proc, 126, 56, 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4122 9 { jwin_edit_proc, 126, 56+(18), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4123 //318
4124 //attributes page 4, attrib 25 to 32
4125 9 { jwin_text_proc, 6, 58+(18*2), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 25:", NULL, NULL },
4126 9 { jwin_text_proc, 6, 58+(18*3), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 26:", NULL, NULL },
4127 9 { jwin_text_proc, 6, 58+(18*4), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 27:", NULL, NULL },
4128 9 { jwin_text_proc, 6, 58+(18*5), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 28:", NULL, NULL },
4129 9 { jwin_text_proc, 6, 58+(18*6), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 29:", NULL, NULL },
4130 9 { jwin_text_proc, 6, 58+(18*7), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 30:", NULL, NULL },
4131 9 { jwin_text_proc, 6, 58+(18*8), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 31:", NULL, NULL },
4132 9 { jwin_text_proc, 6, 58+(18*9), 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Misc Attr. 32:", NULL, NULL },
4133 //327 : Misc Attribute boxes.
4134 9 { jwin_edit_proc, 126, 56+(18*2), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4135 9 { jwin_edit_proc, 126, 56+(18*3), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4136 9 { jwin_edit_proc, 126, 56+(18*4), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4137 9 { jwin_edit_proc, 126, 56+(18*5), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4138 9 { jwin_edit_proc, 126, 56+(18*6), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4139 9 { jwin_edit_proc, 126, 56+(18*7), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4140 9 { jwin_edit_proc, 126, 56+(18*8), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4141 9 { jwin_edit_proc, 126, 56+(18*9), 95, 16, vc(12), vc(1), 0, 0, 6, 0, NULL, NULL, NULL },
4142 //334
4143 9 { d_dummy_proc, 112+10, 47+38+10 + 18, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Action Script:", NULL, NULL },
4144
4145 9 { jwin_droplist_proc, 182, 66, 130, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 1, 0, (void *) &npcscript_list, NULL, NULL },
4146 9 { jwin_text_proc, 182, 58, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "NPC Action Script:", NULL, NULL },
4147 //337
4148 //npc Script InitD Labels (not editable)
4149 // { jwin_text_proc, 6+10, 10+29+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D0:", NULL, NULL },
4150 // { jwin_text_proc, 6+10, 10+47+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D1:", NULL, NULL },
4151 // { jwin_text_proc, 6+10, 10+65+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D2:", NULL, NULL },
4152 // { jwin_text_proc, 6+10, 10+83+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D3:", NULL, NULL },
4153 // { jwin_text_proc, 6+10, 10+101+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D4:", NULL, NULL },
4154 // { jwin_text_proc, 6+10, 10+119+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D5:", NULL, NULL },
4155 // { jwin_text_proc, 6+10, 10+137+20, 24, 36, 0, 0, 0, 0, 0, 0, (void *) "D6:", NULL, NULL },
4156 // { jwin_text_proc, 6+10, 10+155+20, 24, 12, 0, 0, 0, 0, 0, 0, (void *) "D7:", NULL, NULL },
4157
4158 //editable npc script InitD fields
4159 //337
4160 9 { jwin_rtext_proc, 90, 13+29+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*) "InitD[0]", NULL, NULL},
4161 9 { jwin_rtext_proc, 90, 13+47+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[1]", NULL, NULL },
4162 9 { jwin_rtext_proc, 90, 13+65+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[2]", NULL, NULL },
4163 9 { jwin_rtext_proc, 90, 13+83+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[3]", NULL, NULL },
4164 9 { jwin_rtext_proc, 90, 13+101+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[4]", NULL, NULL },
4165 9 { jwin_rtext_proc, 90, 13+119+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[5]", NULL, NULL },
4166 9 { jwin_rtext_proc, 90, 13+137+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[6]", NULL, NULL },
4167 9 { jwin_rtext_proc, 90, 13+155+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[7]", NULL, NULL },
4168
4169 // { jwin_edit_proc, 6+10, 10+29+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4170 // { jwin_edit_proc, 6+10, 10+47+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4171 // { jwin_edit_proc, 6+10, 10+65+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4172 // { jwin_edit_proc, 6+10, 10+83+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4173 // { jwin_edit_proc, 6+10, 10+101+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4174 // { jwin_edit_proc, 6+10, 10+119+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4175 // { jwin_edit_proc, 6+10, 10+137+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4176 // { jwin_edit_proc, 6+10, 10+155+20, 90, 16, 0, 0, 0, 0, 0, 0, 64, NULL, NULL },
4177
4178 //NPC InitD Data fields
4179 //345
4180 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+29+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4181 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+47+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4182 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+65+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4183 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+83+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4184 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+101+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4185 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+119+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4186 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+137+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4187 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+155+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4188 //353
4189 9 { jwin_rtext_proc, 90, 13+29+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[0]", NULL, NULL },
4190 9 { jwin_rtext_proc, 90, 13+47+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[1]", NULL, NULL },
4191 9 { jwin_rtext_proc, 90, 13+65+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[2]", NULL, NULL },
4192 9 { jwin_rtext_proc, 90, 13+83+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[3]", NULL, NULL },
4193 9 { jwin_rtext_proc, 90, 13+101+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[4]", NULL, NULL },
4194 9 { jwin_rtext_proc, 90, 13+119+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[5]", NULL, NULL },
4195 9 { jwin_rtext_proc, 90, 13+137+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[6]", NULL, NULL },
4196 9 { jwin_rtext_proc, 90, 13+155+20, 90, 16, vc(14), vc(1), 0, 0, 63, 0, (void*)"InitD[7]", NULL, NULL },
4197 //361
4198 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+29+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4199 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+47+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4200 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+65+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4201 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+83+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4202 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+101+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4203 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+119+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4204 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+137+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4205 9 { jwin_numedit_swap_zsint_proc, (90-24)+34+10, 10+155+20, 72-16, 16, vc(12), vc(1), 0, 0, 12, 0, NULL, NULL, NULL },
4206 //369
4207 9 { jwin_text_proc, 182, 58, 35, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "EWeapon Script:", NULL, NULL },
4208 9 { jwin_droplist_proc, 182, 66, 130, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, D_EXIT, 1, 0, (void *) &eweaponscript_list, NULL, NULL },
4209 //371
4210 9 { jwin_check_proc, 6, 50, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Obeys Gravity", NULL, NULL },
4211 9 { jwin_check_proc, 6, 60, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Fall Into Pitfalls", NULL, NULL },
4212 9 { jwin_check_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Walk Over Pitfalls", NULL, NULL },
4213 9 { jwin_check_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Drown In Liquid", NULL, NULL },
4214 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can Walk On Liquid", NULL, NULL },
4215 /*
4216 // 248 scripts
4217 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_script_tabs, NULL, (void *)enedata_dlg },
4218 //249 graphics
4219 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_graphics_tabs, NULL, (void *)enedata_dlg },
4220 //250 sounds
4221 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_sounds_tabs, NULL, (void *)enedata_dlg },
4222 //251 basic
4223 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_basic_tabs, NULL, (void *)enedata_dlg },
4224 //252 attacks
4225 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_attacks_tabs, NULL, (void *)enedata_dlg },
4226 //253 movement
4227 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_movement_tabs, NULL, (void *)enedata_dlg },
4228 //254 flags
4229 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_flags_tabs, NULL, (void *)enedata_dlg },
4230 //255 attributes
4231 { jwin_tab_proc, 4, 34, 312, 184, 0, 0, 0, 0, 0, 0, (void *) enemy_attribs_tabs, NULL, (void *)enedata_dlg },
4232 */
4233 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
4234 //377
4235 9 { jwin_swapbtn_proc, 164, 59, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4236 9 { jwin_swapbtn_proc, 164, 77, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4237 9 { jwin_swapbtn_proc, 164, 95, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4238 9 { jwin_swapbtn_proc, 164, 113, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4239 9 { jwin_swapbtn_proc, 164, 131, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4240 9 { jwin_swapbtn_proc, 164, 149, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4241 9 { jwin_swapbtn_proc, 164, 167, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4242 9 { jwin_swapbtn_proc, 164, 185, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4243 //385
4244 9 { jwin_swapbtn_proc, 164, 59, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4245 9 { jwin_swapbtn_proc, 164, 77, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4246 9 { jwin_swapbtn_proc, 164, 95, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4247 9 { jwin_swapbtn_proc, 164, 113, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4248 9 { jwin_swapbtn_proc, 164, 131, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4249 9 { jwin_swapbtn_proc, 164, 149, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4250 9 { jwin_swapbtn_proc, 164, 167, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4251 9 { jwin_swapbtn_proc, 164, 185, 16, 16, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
4252 //393
4253 9 { jwin_text_proc, 9, 108-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Shadow Sprite:", NULL, NULL },
4254 9 { jwin_droplist_proc, 126, 104-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4255 9 { jwin_text_proc, 9, 126-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Death Sprite:", NULL, NULL },
4256 9 { jwin_droplist_proc, 126, 122-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4257 9 { jwin_text_proc, 9, 144-36, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Spawn Sprite:", NULL, NULL },
4258 9 { jwin_droplist_proc, 126, 140-36, 151, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &weapon_list, NULL, NULL },
4259 //399
4260 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Ignores \"Temp No Return\".", NULL, NULL },
4261 9 { jwin_check_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Ignored by Kill All Enemies effects.", NULL, NULL },
4262 9 { d_dummy_proc, 6, 70, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00040000", NULL, NULL },
4263 9 { d_dummy_proc, 6, 80, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00080000", NULL, NULL },
4264 9 { d_dummy_proc, 6, 90, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00100000", NULL, NULL },
4265 9 { d_dummy_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00200000", NULL, NULL },
4266 9 { d_dummy_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00400000", NULL, NULL },
4267 9 { d_dummy_proc, 6, 120, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x00800000", NULL, NULL },
4268 //407
4269 9 { d_dummy_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x01000000", NULL, NULL },
4270 9 { d_dummy_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x02000000", NULL, NULL },
4271 9 { d_dummy_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x04000000", NULL, NULL },
4272 9 { d_dummy_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x08000000", NULL, NULL },
4273 9 { d_dummy_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x10000000", NULL, NULL },
4274 9 { d_dummy_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x20000000", NULL, NULL },
4275 9 { d_dummy_proc, 6, 190, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x40000000", NULL, NULL },
4276 9 { d_dummy_proc, 6, 200, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Flag2 0x80000000", NULL, NULL },
4277 //415
4278 9 { jwin_text_proc, 6, 216, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "SwitchHook Weapon Defense:", NULL, NULL },
4279 9 { jwin_droplist_proc, 126, 216-4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &defense_list, NULL, NULL },
4280 9 { jwin_check_proc, 6, 130, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Liquid", NULL, NULL },
4281 9 { jwin_check_proc, 6, 140, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Shallow Liquid", NULL, NULL },
4282 9 { jwin_check_proc, 6, 150, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can ONLY Walk On Pitfalls", NULL, NULL },
4283 //420
4284 9 { jwin_check_proc, 6, 160, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through solidity", NULL, NULL },
4285 9 { jwin_check_proc, 6, 170, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through No Enemies flags / etc", NULL, NULL },
4286 9 { jwin_check_proc, 6, 180, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Can walk through screen edge", NULL, NULL },
4287 9 { jwin_check_proc, 6, 100, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Use 'scripted movement' for engine movement", NULL, NULL },
4288 9 { jwin_check_proc, 6, 110, 280, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Cannot be pushed by moving solid objects", NULL, NULL },
4289 9 { jwin_text_proc, 6, 120, 280, 8, vc(14), vc(1), 0, 0, 0, 0, (void *) "Below flags only affect scripted movement functions", NULL, NULL },
4290 //NPC Script Help buttons
4291 //426
4292 9 { jwin_button_proc, 92, 10 + 29 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4293 9 { jwin_button_proc, 92, 10 + 47 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4294 9 { jwin_button_proc, 92, 10 + 65 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4295 9 { jwin_button_proc, 92, 10 + 83 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4296 9 { jwin_button_proc, 92, 10 + 101 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4297 9 { jwin_button_proc, 92, 10 + 119 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4298 9 { jwin_button_proc, 92, 10 + 137 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4299 9 { jwin_button_proc, 92, 10 + 155 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4300 //434
4301 9 { jwin_button_proc, 92, 10 + 29 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4302 9 { jwin_button_proc, 92, 10 + 47 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4303 9 { jwin_button_proc, 92, 10 + 65 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4304 9 { jwin_button_proc, 92, 10 + 83 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4305 9 { jwin_button_proc, 92, 10 + 101 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4306 9 { jwin_button_proc, 92, 10 + 119 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4307 9 { jwin_button_proc, 92, 10 + 137 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4308 9 { jwin_button_proc, 92, 10 + 155 + 20, 16, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"?", NULL, NULL },
4309
4310 9 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
4311 };
4312
4313
4314 void setEnemyLabels(int32_t family)
4315 {
4316 std::map<int32_t, EnemyNameInfo *> *nmap = getEnemyNameMap();
4317 std::map<int32_t, EnemyNameInfo *>::iterator it = nmap->find(family);
4318 EnemyNameInfo *inf = NULL;
4319
4320 if(it != nmap->end())
4321 inf = it->second;
4322
4323 // Default labels
4324 enedata_dlg[54].dp = (void*)"Misc. Attr. 1:";
4325 enedata_dlg[55].dp = (void*)"Misc. Attr. 2:";
4326 enedata_dlg[56].dp = (void*)"Misc. Attr. 3:";
4327 enedata_dlg[57].dp = (void*)"Misc. Attr. 4:";
4328 enedata_dlg[58].dp = (void*)"Misc. Attr. 5:";
4329 enedata_dlg[59].dp = (void*)"Misc. Attr. 6:";
4330 enedata_dlg[60].dp = (void*)"Misc. Attr. 7:";
4331 enedata_dlg[61].dp = (void*)"Misc. Attr. 8:";
4332 enedata_dlg[62].dp = (void*)"Misc. Attr. 9:";
4333 enedata_dlg[63].dp = (void*)"Misc. Attr. 10:";
4334
4335 if(family==eeKEESE || family==eeGHINI || family==eePEAHAT || family==eeMANHAN
4336 || family==eeGLEEOK || family==eePATRA || family==eeDIG)
4337 enedata_dlg[22].dp = (void*)"Turn Freq.:";
4338 else
4339 enedata_dlg[22].dp = (void*)"Halt Rate:";
4340
4341 //set enemy editor new 2.55 flags 1 to 16 label
4342 for(int32_t i = 0; i < 16; i++)
4343 {
4344 if(inf != NULL)
4345 {
4346 if(inf->flags[i]!=NULL)
4347 {
4348 enedata_dlg[254+i].dp = (char*)inf->flags[i];
4349 }
4350 else
4351 {
4352 //enedata_dlg[64+i].flags = enedata_dlg[54+i].flags = D_DISABLED;
4353 }
4354 }
4355
4356 }
4357
4358 //Enemy Attribute Labels, starting at 11
4359 for ( int32_t q = 10; q < 16; q++ ) //check these numbers! -Z
4360 {
4361 if(inf != NULL && inf->attributes[q]!=NULL)
4362 {
4363 enedata_dlg[288+(q-10)].dp = (char*)inf->attributes[q];
4364 }
4365 if(inf != NULL && inf->list[q] != NULL)
4366 {
4367 enedata_dlg[296+(q-10)].proc = jwin_droplist_proc;
4368 enedata_dlg[296+(q-10)].fg = jwin_pal[jcTEXTFG];
4369 enedata_dlg[296+(q-10)].bg = jwin_pal[jcTEXTBG];
4370 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4371 enedata_dlg[296+(q-10)].dp = inf->list[q];
4372 enedata_dlg[296+(q-10)].dp2 = NULL;
4373 enedata_dlg[296+(q-10)].h = 22;
4374 }
4375 else
4376 {
4377 enedata_dlg[296+(q-10)].proc = jwin_edit_proc;
4378 enedata_dlg[296+(q-10)].fg = vc(14);
4379 enedata_dlg[296+(q-10)].bg = vc(1);
4380 enedata_dlg[296+(q-10)].dp = NULL;
4381 enedata_dlg[296+(q-10)].d1 = 6;
4382 enedata_dlg[296+(q-10)].h = 24;
4383 enedata_dlg[296+(q-10)].dp2 = get_zc_font(font_lfont_l);
4384 }
4385 }
4386 for ( int32_t q = 16; q < 24; q++ ) //check these numbers! -Z
4387 {
4388 if(inf->attributes[q]!=NULL)
4389 {
4390 enedata_dlg[302+(q-16)].dp = (char*)inf->attributes[q];
4391 }
4392 if(inf != NULL && inf->list[q] != NULL)
4393 {
4394 enedata_dlg[310+(q-16)].proc = jwin_droplist_proc;
4395 enedata_dlg[310+(q-16)].fg = jwin_pal[jcTEXTFG];
4396 enedata_dlg[310+(q-16)].bg = jwin_pal[jcTEXTBG];
4397 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4398 enedata_dlg[310+(q-16)].dp = inf->list[q];
4399 enedata_dlg[310+(q-16)].dp2 = NULL;
4400 enedata_dlg[310+(q-16)].h = 22;
4401 }
4402 else
4403 {
4404 enedata_dlg[310+(q-16)].proc = jwin_edit_proc;
4405 enedata_dlg[310+(q-16)].fg = vc(14);
4406 enedata_dlg[310+(q-16)].bg = vc(1);
4407 enedata_dlg[310+(q-16)].dp = NULL;
4408 enedata_dlg[310+(q-16)].d1 = 6;
4409 enedata_dlg[310+(q-16)].h = 24;
4410 enedata_dlg[310+(q-16)].dp2 = get_zc_font(font_lfont_l);
4411 }
4412 }
4413 for ( int32_t q = 24; q < 32; q++ ) //check these numbers! -Z
4414 {
4415 if(inf->attributes[q]!=NULL)
4416 {
4417 enedata_dlg[318+(q-24)].dp = (char*)inf->attributes[q]; //attr err
4418 }
4419 if(inf != NULL && inf->list[q] != NULL)
4420 {
4421 enedata_dlg[326+(q-24)].proc = jwin_droplist_proc;
4422 enedata_dlg[326+(q-24)].fg = jwin_pal[jcTEXTFG];
4423 enedata_dlg[326+(q-24)].bg = jwin_pal[jcTEXTBG];
4424 ((ListData*)inf->list[q])->font = (&a4fonts[font_lfont_l]);
4425 enedata_dlg[326+(q-24)].dp = inf->list[q];
4426 enedata_dlg[326+(q-24)].dp2 = NULL;
4427 enedata_dlg[326+(q-24)].h = 22;
4428 }
4429 else
4430 {
4431 enedata_dlg[326+(q-24)].proc = jwin_edit_proc;
4432 enedata_dlg[326+(q-24)].fg = vc(14);
4433 enedata_dlg[326+(q-24)].bg = vc(1);
4434 enedata_dlg[326+(q-24)].dp = NULL;
4435 enedata_dlg[326+(q-24)].d1 = 6;
4436 enedata_dlg[326+(q-24)].h = 24;
4437 enedata_dlg[326+(q-24)].dp2 = get_zc_font(font_lfont_l);
4438 }
4439 }
4440
4441 for(int32_t i = 0; i < 10; i++)
4442 {
4443 if(inf != NULL)
4444 {
4445 if(inf->misc[i]!=NULL)
4446 {
4447 enedata_dlg[54+i].dp = (char*)inf->misc[i];
4448 //enedata_dlg[54+i].flags = enedata_dlg[64+i].flags = 0;
4449 }
4450 else
4451 {
4452 //enedata_dlg[64+i].flags = enedata_dlg[54+i].flags = D_DISABLED;
4453 }
4454 }
4455
4456 if(inf != NULL && inf->list[i] != NULL)
4457 {
4458 enedata_dlg[64+i].proc = jwin_droplist_proc;
4459 enedata_dlg[64+i].fg = jwin_pal[jcTEXTFG];
4460 enedata_dlg[64+i].bg = jwin_pal[jcTEXTBG];
4461 ((ListData*)inf->list[i])->font = (&a4fonts[font_lfont_l]);
4462 enedata_dlg[64+i].dp = inf->list[i];
4463 enedata_dlg[64+i].dp2 = NULL;
4464 enedata_dlg[64+i].h = 22;
4465 }
4466 else
4467 {
4468 enedata_dlg[64+i].proc = jwin_edit_proc;
4469 enedata_dlg[64+i].fg = vc(14);
4470 enedata_dlg[64+i].bg = vc(1);
4471 enedata_dlg[64+i].dp = NULL;
4472 enedata_dlg[64+i].d1 = 6;
4473 enedata_dlg[64+i].h = 24;
4474 enedata_dlg[64+i].dp2 = get_zc_font(font_lfont_l);
4475 }
4476 }
4477
4478 bool r = 0 != get_qr(qr_NEWENEMYTILES);
4479 enedata_dlg[r ? 47 : 48].flags |= D_DISABLED;
4480 enedata_dlg[r ? 48 : 47].flags &= ~D_DISABLED;
4481 enedata_dlg[r ? 140 : 141].flags |= D_DISABLED;
4482 enedata_dlg[r ? 141 : 140].flags &= ~D_DISABLED;
4483
4484 if(family==eeTRAP || family==eeROCK || family==eeDONGO ) //|| family==eeGANON)
4485 {
4486 for(int32_t j=0; j <= edefBYRNA+1 /* + the Set All button*/; j++) enedata_dlg[j+161].flags |= D_DISABLED;
4487
4488 enedata_dlg[192].flags |= D_DISABLED; //Defenses disabled for Traps. rocks,. Dodongos and Ganon.
4489 //We will need to remove Ganon from this list once we give him defence properties in the EE. -Z
4490
4491 enedata_dlg[203].d1 |= D_DISABLED;
4492 enedata_dlg[204].d1 |= D_DISABLED;
4493 enedata_dlg[205].d1 |= D_DISABLED;
4494 enedata_dlg[206].d1 |= D_DISABLED;
4495 enedata_dlg[207].d1 |= D_DISABLED;
4496 enedata_dlg[208].d1 |= D_DISABLED;
4497 enedata_dlg[209].d1 |= D_DISABLED;
4498 enedata_dlg[210].d1 |= D_DISABLED;
4499 enedata_dlg[211].d1 |= D_DISABLED;
4500 enedata_dlg[212].d1 |= D_DISABLED;
4501 }
4502 else
4503 {
4504 for(int32_t j=0; j <= edefBYRNA+1 /* + the Set All button*/; j++) enedata_dlg[j+161].flags &= ~D_DISABLED;
4505
4506 enedata_dlg[192].flags &= ~D_DISABLED;
4507 enedata_dlg[203].d1 &= ~D_DISABLED;
4508 enedata_dlg[204].d1 &= ~D_DISABLED;
4509 enedata_dlg[205].d1 &= ~D_DISABLED;
4510 enedata_dlg[206].d1 &= ~D_DISABLED;
4511 enedata_dlg[207].d1 &= ~D_DISABLED;
4512 enedata_dlg[208].d1 &= ~D_DISABLED;
4513 enedata_dlg[209].d1 &= ~D_DISABLED;
4514 enedata_dlg[210].d1 &= ~D_DISABLED;
4515 enedata_dlg[211].d1 &= ~D_DISABLED;
4516 enedata_dlg[212].d1 &= ~D_DISABLED;
4517 }
4518
4519 if(!(family==eeWALK || family==eeFIRE || family==eeOTHER))
4520 {
4521 enedata_dlg[98].flags |= D_DISABLED;
4522 enedata_dlg[99].flags |= D_DISABLED;
4523 enedata_dlg[100].flags |= D_DISABLED;
4524 enedata_dlg[101].flags |= D_DISABLED;
4525 enedata_dlg[102].flags |= D_DISABLED;
4526 enedata_dlg[186].flags |= D_DISABLED;
4527 }
4528 else
4529 {
4530 enedata_dlg[98].flags &= ~D_DISABLED;
4531 enedata_dlg[99].flags &= ~D_DISABLED;
4532 enedata_dlg[100].flags &= ~D_DISABLED;
4533 enedata_dlg[101].flags &= ~D_DISABLED;
4534 enedata_dlg[102].flags &= ~D_DISABLED;
4535 enedata_dlg[186].flags &= ~D_DISABLED;
4536 }
4537 }
4538
4539 int32_t d_ecstile_proc(int32_t msg,DIALOG *d,int32_t c)
4540 {
4541 //these are here to bypass compiler warnings about unused arguments
4542 c=c;
4543 int32_t *tempint=enedata_flags2_list;
4544 tempint=tempint;
4545
4546 switch(msg)
4547 {
4548 case MSG_CLICK:
4549 {
4550 int32_t f = -8; // Suppress Flip, but in a way that the lowest 3 bits are 0. (Trust me here.) -L
4551 int32_t t = d->d1;
4552 int32_t cs = d->d2;
4553
4554 if((CHECK_CTRL_CMD)
4555 ? select_tile_2(t,f,1,cs,true)
4556 : select_tile(t,f,1,cs,true))
4557 {
4558 d->d1 = t;
4559 enedata_dlg[247].d2 = cs;
4560 enedata_dlg[248].d2 = cs;
4561 enedata_dlg[249].d2 = cs;
4562 return D_REDRAW;
4563 }
4564 }
4565 break;
4566
4567 case MSG_DRAW:
4568 d->w = 36;
4569 d->h = 36;
4570
4571 BITMAP *buf = create_bitmap_ex(8,20,20);
4572 BITMAP *bigbmp = create_bitmap_ex(8,d->w,d->h);
4573
4574 if(buf && bigbmp)
4575 {
4576 clear_bitmap(buf);
4577
4578 if(d->d1)
4579 overtile16(buf,d->d1,2,2,d->d2,0);
4580
4581 stretch_blit(buf, bigbmp, 2,2, 17, 17, 2, 2, d->w-3, d->h-3);
4582 destroy_bitmap(buf);
4583 jwin_draw_frame(bigbmp,0,0,d->w,d->h,FR_DEEP);
4584 blit(bigbmp,screen,0,0,d->x,d->y,d->w,d->h);
4585 destroy_bitmap(bigbmp);
4586 }
4587
4588 // text_mode(d->bg);
4589 break;
4590 }
4591
4592 return D_O_K;
4593 }
4594
4595 void setEnemyScriptLabels(const guydata& test, char (&npc_initd_labels)[8][65], char (&weapon_initd_labels)[8][65])
4596 {
4597 for (int32_t q = 0; q < 8; ++q)
4598 {
4599 sprintf(npc_initd_labels[q], "InitD[%d]", q);
4600 sprintf(weapon_initd_labels[q], "InitD[%d]", q);
4601 enedata_dlg[345 + q].d1 &= ~0xF;
4602 enedata_dlg[345 + q].d1 |= nswapDEC;
4603 enedata_dlg[361 + q].d1 &= ~0xF;
4604 enedata_dlg[361 + q].d1 |= nswapDEC;
4605 enedata_dlg[426 + q].flags |= D_DISABLED;
4606 enedata_dlg[434 + q].flags |= D_DISABLED;
4607 }
4608
4609 if (test.script)
4610 {
4611 zasm_meta const& meta = guyscripts[test.script]->meta;
4612 for (int32_t q = 0; q < 8; ++q)
4613 {
4614 if (!meta.initd[q].empty())
4615 snprintf(npc_initd_labels[q], 64, "%s", meta.initd[q].c_str());
4616 if(!meta.initd_help[q].empty())
4617 enedata_dlg[426 + q].flags &= ~D_DISABLED;
4618 DIALOG* swapbtn = (DIALOG*)enedata_dlg[345 + q].dp3;
4619 if(meta.initd_type[q]>-1)
4620 {
4621 swapbtn->d1 &= ~0xF;
4622 swapbtn->d1 |= meta.initd_type[q] & 0x3;
4623 }
4624 }
4625 }
4626
4627 if (test.weaponscript)
4628 {
4629 zasm_meta const& meta = ewpnscripts[test.weaponscript]->meta;
4630 for (int32_t q = 0; q < 8; ++q)
4631 {
4632 if(!meta.initd[q].empty())
4633 snprintf(weapon_initd_labels[q], 64, "%s", meta.initd[q].c_str());
4634 if (!meta.initd_help[q].empty())
4635 enedata_dlg[434 + q].flags &= ~D_DISABLED;
4636 DIALOG* swapbtn = (DIALOG*)enedata_dlg[361 + q].dp3;
4637 if (meta.initd_type[q] > -1)
4638 {
4639 swapbtn->d1 &= ~0xF;
4640 swapbtn->d1 |= meta.initd_type[q] & 0x3;
4641 }
4642 }
4643 }
4644 }
4645
4646 void showEnemyScriptMetaHelp(const guydata& test, int32_t i)
4647 {
4648 if (i < 8)
4649 {
4650 if (test.script)
4651 {
4652 zasm_meta const& meta = guyscripts[test.script]->meta;
4653 if(!meta.initd_help[i].empty())
4654 InfoDialog("Info", meta.initd_help[i].c_str()).show();
4655 }
4656 }
4657 else
4658 {
4659 i -= 8;
4660 if (test.weaponscript)
4661 {
4662 zasm_meta const& meta = ewpnscripts[test.weaponscript]->meta;
4663 if (!meta.initd_help[i].empty())
4664 InfoDialog("Info", meta.initd_help[i].c_str()).show();
4665 }
4666 }
4667 }
4668
4669 void edit_enemydata(int32_t index)
4670 {
4671 //guysbuf[index].script = 1;
4672 char hp[8], dp[8], wdp[8], rat[8], hrt[8], hom[8], grm[8], spd[8],
4673 frt[8], efr[8], bsp[8];
4674 char w[8],h[8],sw[8],sh[8],ew[8],eh[8];
4675 char name[64];
4676 char attribs[32][8];
4677 char enemynumstr[75];
4678 char hitx[8], hity[8], hitz[8], tiley[8], tilex[8], hitofsx[8], hitofsy[8], hitofsz[8], drawofsx[8], drawofsy[8];
4679 char npc_initd_labels[8][65];
4680 char weapon_initd_labels[8][65];
4681 char weap_initdvals[8][13];
4682
4683 char initdvals[8][13];
4684 //begin npc script
4685 int32_t j = 0; build_binpcs_list(); //npc scripts lister
4686 for(j = 0; j < binpcs_cnt; j++)
4687 {
4688 if(binpcs[j].second == guysbuf[index].script -1)
4689 {
4690 enedata_dlg[335].d1 = j;
4691 break;
4692 }
4693 }
4694
4695 int32_t j2 = 0;
4696 build_bieweapons_list(); //lweapon scripts lister
4697 for(j2 = 0; j2 < bieweapons_cnt; j2++)
4698 {
4699 if(bieweapons[j2].second == guysbuf[index].weaponscript -1)
4700 {
4701 enedata_dlg[370].d1 = j2;
4702 break;
4703 }
4704 }
4705
4706 for ( int32_t q = 0; q < 8; q++ )
4707 {
4708 //NPC InitD / WeaponInitD
4709 enedata_dlg[345+q].dp = initdvals[q];
4710 enedata_dlg[361+q].dp = weap_initdvals[q];
4711 enedata_dlg[345+q].fg = guysbuf[index].initD[q];
4712 enedata_dlg[361+q].fg = guysbuf[index].weap_initiald[q];
4713 enedata_dlg[345+q].dp3 = &(enedata_dlg[377+q]);
4714 enedata_dlg[361+q].dp3 = &(enedata_dlg[385+q]);
4715
4716 //InitD Labels
4717 enedata_dlg[337 + q].dp = npc_initd_labels[q];
4718 enedata_dlg[353 + q].dp = weapon_initd_labels[q];
4719 }
4720
4721 //end npc script
4722
4723 //disable the missing dialog items!
4724 //else they will lurk in the background
4725 //stealing mouse focus -DD
4726 for(int32_t i=0; enedata_flags2_list[i] != -1; i++)
4727 {
4728 enedata_dlg[enedata_flags2_list[i]].proc = d_dummy_proc;
4729 enedata_dlg[enedata_flags2_list[i]].x = 0;
4730 enedata_dlg[enedata_flags2_list[i]].y = 0;
4731 enedata_dlg[enedata_flags2_list[i]].w = 0;
4732 enedata_dlg[enedata_flags2_list[i]].h = 0;
4733 }
4734
4735 sprintf(enemynumstr,"Enemy %d: %s", index, guy_string[index]);
4736 enedata_dlg[0].dp = enemynumstr;
4737 enedata_dlg[0].dp2 = get_zc_font(font_lfont);
4738 enedata_dlg[247].d1 = guysbuf[index].tile;
4739 enedata_dlg[247].d2 = guysbuf[index].cset;
4740 enedata_dlg[248].d1 = guysbuf[index].s_tile;
4741 enedata_dlg[248].d2 = guysbuf[index].cset;
4742 enedata_dlg[249].d1 = guysbuf[index].e_tile;
4743 enedata_dlg[249].d2 = guysbuf[index].cset;
4744
4745 // Enemy weapon list
4746 if(guysbuf[index].weapon==wNone)
4747 {
4748 enedata_dlg[45].d1 = 0;
4749 }
4750 else
4751 {
4752 if(biew_cnt==-1)
4753 {
4754 build_biew_list();
4755 }
4756
4757 for(int32_t j=0; j<biew_cnt; j++)
4758 {
4759 if(biew[j].i == guysbuf[index].weapon /*- wEnemyWeapons*/)
4760 enedata_dlg[45].d1 = j;
4761 }
4762 }
4763
4764 // Enemy family list
4765 if(bief_cnt==-1)
4766 {
4767 build_bief_list();
4768 }
4769
4770 for(int32_t j=0; j<bief_cnt; j++)
4771 {
4772 if(bief[j].i == guysbuf[index].family)
4773 enedata_dlg[46].d1 = j;
4774 }
4775
4776 // Enemy animation list
4777 if(biea_cnt==-1)
4778 {
4779 build_biea_list();
4780 }
4781
4782 for(int32_t j=0; j<biea_cnt; j++)
4783 {
4784 if(biea[j].i == guysbuf[index].anim)
4785 enedata_dlg[47].d1 = j;
4786
4787 if(biea[j].i == guysbuf[index].e_anim)
4788 enedata_dlg[48].d1 = j;
4789 }
4790
4791
4792 enedata_dlg[49].d1 = guysbuf[index].item_set;
4793
4794 sprintf(w,"%d",guysbuf[index].width);
4795 sprintf(h,"%d",guysbuf[index].height);
4796 sprintf(sw,"%d",guysbuf[index].s_width);
4797 sprintf(sh,"%d",guysbuf[index].s_height);
4798 sprintf(ew,"%d",guysbuf[index].e_width);
4799 sprintf(eh,"%d",guysbuf[index].e_height);
4800 enedata_dlg[30].dp = w;
4801 enedata_dlg[31].dp = h;
4802 enedata_dlg[32].dp = sw;
4803 enedata_dlg[33].dp = sh;
4804 enedata_dlg[34].dp = ew;
4805 enedata_dlg[35].dp = eh;
4806
4807 sprintf(hp,"%d",guysbuf[index].hp);
4808 sprintf(dp,"%d",guysbuf[index].dp);
4809 sprintf(wdp,"%d",guysbuf[index].wdp);
4810 sprintf(grm,"%d",guysbuf[index].grumble);
4811 enedata_dlg[37].dp = hp;
4812 enedata_dlg[38].dp = dp;
4813 enedata_dlg[39].dp = wdp;
4814 enedata_dlg[40].dp = grm;
4815
4816 sprintf(rat,"%d",guysbuf[index].rate);
4817 sprintf(hrt,"%d",guysbuf[index].hrate);
4818 sprintf(hom,"%d",guysbuf[index].homing);
4819 sprintf(spd,"%d",guysbuf[index].step);
4820 enedata_dlg[41].dp = rat;
4821 enedata_dlg[42].dp = hrt;
4822 enedata_dlg[43].dp = hom;
4823 enedata_dlg[44].dp = spd;
4824
4825 sprintf(name,"%s",guy_string[index]);
4826 enedata_dlg[36].dp = name;
4827
4828 for (int q = 0; q < 32; ++q)
4829 {
4830 sprintf(attribs[q], "%d", guysbuf[index].attributes[q]);
4831 }
4832
4833
4834 for(int32_t j=0; j <= edefBYRNA; j++)
4835 {
4836 enedata_dlg[j+161].d1 = guysbuf[index].defense[j];
4837 }
4838
4839 enedata_dlg[192].d1 = guysbuf[index].defense[edefWhistle];
4840 enedata_dlg[416].d1 = guysbuf[index].defense[edefSwitchHook];
4841
4842
4843 //Script Defenses
4844 enedata_dlg[203].d1 = guysbuf[index].defense[edefSCRIPT01];
4845 enedata_dlg[204].d1 = guysbuf[index].defense[edefSCRIPT02];
4846 enedata_dlg[205].d1 = guysbuf[index].defense[edefSCRIPT03];
4847 enedata_dlg[206].d1 = guysbuf[index].defense[edefSCRIPT04];
4848 enedata_dlg[207].d1 = guysbuf[index].defense[edefSCRIPT05];
4849 enedata_dlg[208].d1 = guysbuf[index].defense[edefSCRIPT06];
4850 enedata_dlg[209].d1 = guysbuf[index].defense[edefSCRIPT07];
4851 enedata_dlg[210].d1 = guysbuf[index].defense[edefSCRIPT08];
4852 enedata_dlg[211].d1 = guysbuf[index].defense[edefSCRIPT09];
4853 enedata_dlg[212].d1 = guysbuf[index].defense[edefSCRIPT10];
4854
4855 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
4856 sprintf(tilex,"%d",guysbuf[index].txsz);
4857 sprintf(tiley,"%d",guysbuf[index].tysz);
4858 sprintf(hitx,"%d",guysbuf[index].hxsz);
4859 sprintf(hity,"%d",guysbuf[index].hysz);
4860 sprintf(hitz,"%d",guysbuf[index].hzsz);
4861
4862 enedata_dlg[214].dp = tilex;
4863 enedata_dlg[216].dp = tiley;
4864 enedata_dlg[218].dp = hitx;
4865 enedata_dlg[220].dp = hity;
4866 enedata_dlg[222].dp = hitz;
4867
4868 //HitXOffset, HitYOFfset, hitZOffset, DrawXOffsrt, DrawYOffset
4869 sprintf(hitofsx,"%d",guysbuf[index].hxofs);
4870 sprintf(hitofsy,"%d",guysbuf[index].hyofs);
4871 sprintf(hitofsz,"%d",guysbuf[index].zofs);
4872 sprintf(drawofsx,"%d",guysbuf[index].xofs);
4873 sprintf(drawofsy,"%d",guysbuf[index].yofs); //This seems to be setting to +48 or something with any value set?! -Z
4874
4875 enedata_dlg[224].dp = hitofsx;
4876 enedata_dlg[226].dp = hitofsy;
4877 enedata_dlg[228].dp = hitofsz;
4878 enedata_dlg[230].dp = drawofsx;
4879 enedata_dlg[232].dp = drawofsy; //This seems to be setting to +48 or something with any value set?! -Z
4880
4881 //Override flags
4882 enedata_dlg[237].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_WIDTH) ? D_SELECTED : 0;
4883 enedata_dlg[238].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_HEIGHT) ? D_SELECTED : 0;
4884 enedata_dlg[239].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_Z_HEIGHT) ? D_SELECTED : 0;
4885 enedata_dlg[240].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_X_OFFSET) ? D_SELECTED : 0;
4886 enedata_dlg[241].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_HIT_Y_OFFSET) ? D_SELECTED : 0;
4887 enedata_dlg[242].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_Z_OFFSET) ? D_SELECTED : 0;
4888 enedata_dlg[243].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_X_OFFSET) ? D_SELECTED : 0;
4889 enedata_dlg[244].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_DRAW_Y_OFFSET) ? D_SELECTED : 0;
4890 enedata_dlg[245].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_TILE_WIDTH) ? D_SELECTED : 0;
4891 enedata_dlg[246].flags = (guysbuf[index].SIZEflags&guyflagOVERRIDE_TILE_HEIGHT) ? D_SELECTED : 0;
4892
4893 //New Misc FLags (2.55, flag1 to flag16)
4894 enedata_dlg[254].flags = (guysbuf[index].editorflags&ENEMY_FLAG1) ? D_SELECTED : 0;
4895 enedata_dlg[255].flags = (guysbuf[index].editorflags&ENEMY_FLAG2) ? D_SELECTED : 0;
4896 enedata_dlg[256].flags = (guysbuf[index].editorflags&ENEMY_FLAG3) ? D_SELECTED : 0;
4897 enedata_dlg[257].flags = (guysbuf[index].editorflags&ENEMY_FLAG4) ? D_SELECTED : 0;
4898 enedata_dlg[258].flags = (guysbuf[index].editorflags&ENEMY_FLAG5) ? D_SELECTED : 0;
4899 enedata_dlg[259].flags = (guysbuf[index].editorflags&ENEMY_FLAG6) ? D_SELECTED : 0;
4900 enedata_dlg[260].flags = (guysbuf[index].editorflags&ENEMY_FLAG7) ? D_SELECTED : 0;
4901 enedata_dlg[261].flags = (guysbuf[index].editorflags&ENEMY_FLAG8) ? D_SELECTED : 0;
4902 enedata_dlg[262].flags = (guysbuf[index].editorflags&ENEMY_FLAG9) ? D_SELECTED : 0;
4903 enedata_dlg[263].flags = (guysbuf[index].editorflags&ENEMY_FLAG10) ? D_SELECTED : 0;
4904 enedata_dlg[264].flags = (guysbuf[index].editorflags&ENEMY_FLAG11) ? D_SELECTED : 0;
4905 enedata_dlg[265].flags = (guysbuf[index].editorflags&ENEMY_FLAG12) ? D_SELECTED : 0;
4906 enedata_dlg[266].flags = (guysbuf[index].editorflags&ENEMY_FLAG13) ? D_SELECTED : 0;
4907 enedata_dlg[267].flags = (guysbuf[index].editorflags&ENEMY_FLAG14) ? D_SELECTED : 0;
4908 enedata_dlg[268].flags = (guysbuf[index].editorflags&ENEMY_FLAG15) ? D_SELECTED : 0;
4909 enedata_dlg[269].flags = (guysbuf[index].editorflags&ENEMY_FLAG16) ? D_SELECTED : 0;
4910
4911
4912 sprintf(frt,"%d",guysbuf[index].frate);
4913 sprintf(efr,"%d",guysbuf[index].e_frate);
4914 enedata_dlg[140].dp = frt;
4915 enedata_dlg[141].dp = efr;
4916
4917 //sprintf(sfx,"%d",guysbuf[index].bgsfx);
4918 enedata_dlg[182].d1= (int32_t)guysbuf[index].bgsfx;
4919 enedata_dlg[183].d1= (int32_t)guysbuf[index].hitsfx;
4920 if ( ( enedata_dlg[183].d1 == 0 ) && FFCore.getQuestHeaderInfo(vZelda) < 0x250 || (( FFCore.getQuestHeaderInfo(vZelda) == 0x250 ) && FFCore.getQuestHeaderInfo(vBuild) < 32 ) )
4921 {
4922 //If no user-set hit sound was in place, and the quest was made in a version before 2.53.0 Gamma 2:
4923 enedata_dlg[183].d1 = WAV_EHIT; //Fix quests using the wrong hit sound when loading this.
4924 //Force SFX_HIT here.
4925
4926 }
4927 enedata_dlg[184].d1= (int32_t)guysbuf[index].deadsfx;
4928
4929 // Sprites
4930 if(biw_cnt==-1)
4931 {
4932 build_biw_list();
4933 }
4934 for(int32_t j=0; j<biw_cnt; j++)
4935 {
4936 if(biw[j].i == guysbuf[index].wpnsprite)
4937 enedata_dlg[236].d1 = j;
4938 if(biw[j].i == guysbuf[index].spr_shadow)
4939 enedata_dlg[394].d1 = j;
4940 if(biw[j].i == guysbuf[index].spr_death)
4941 enedata_dlg[396].d1 = j;
4942 if(biw[j].i == guysbuf[index].spr_spawn)
4943 enedata_dlg[398].d1 = j;
4944 }
4945
4946 sprintf(bsp,"%d",guysbuf[index].bosspal);
4947
4948 if(guysbuf[index].cset == 14)
4949 {
4950 enedata_dlg[143].flags = D_SELECTED;
4951 }
4952 else
4953 {
4954 enedata_dlg[143].flags = 0;
4955 }
4956
4957 enedata_dlg[53].dp = bsp;
4958
4959 for(int32_t i=0; i<32; i++)
4960 enedata_dlg[74+i].flags = (guysbuf[index].flags & (1<<i)) ? D_SELECTED : 0;
4961
4962 enedata_dlg[186].d1 = (guysbuf[index].flags & guy_fade_instant ? 2
4963 : guysbuf[index].flags & guy_fade_flicker ? 1 : 0);
4964
4965 for(int32_t i=0; i<16; i++)
4966 enedata_dlg[106+i].flags = (guysbuf[index].flags2 & (1<<i)) ? D_SELECTED : 0;
4967
4968 for(int32_t i=0; i<16; i++)
4969 enedata_dlg[399+i].flags = (guysbuf[index].flags2 & (1<<(i+16))) ? D_SELECTED : 0;
4970
4971 enedata_dlg[371].flags = (guysbuf[index].moveflags & move_obeys_grav) ? D_SELECTED : 0;
4972 enedata_dlg[372].flags = (guysbuf[index].moveflags & move_can_pitfall) ? D_SELECTED : 0;
4973 enedata_dlg[373].flags = (guysbuf[index].moveflags & move_can_pitwalk) ? D_SELECTED : 0;
4974 enedata_dlg[374].flags = (guysbuf[index].moveflags & move_can_waterdrown) ? D_SELECTED : 0;
4975 enedata_dlg[375].flags = (guysbuf[index].moveflags & move_can_waterwalk) ? D_SELECTED : 0;
4976 enedata_dlg[417].flags = (guysbuf[index].moveflags & move_only_waterwalk) ? D_SELECTED : 0;
4977 enedata_dlg[418].flags = (guysbuf[index].moveflags & move_only_shallow_waterwalk) ? D_SELECTED : 0;
4978 enedata_dlg[419].flags = (guysbuf[index].moveflags & move_only_pitwalk) ? D_SELECTED : 0;
4979 enedata_dlg[420].flags = (guysbuf[index].moveflags & move_ignore_solidity) ? D_SELECTED : 0;
4980 enedata_dlg[421].flags = (guysbuf[index].moveflags & move_ignore_blockflags) ? D_SELECTED : 0;
4981 enedata_dlg[422].flags = (guysbuf[index].moveflags & move_ignore_screenedge) ? D_SELECTED : 0;
4982 enedata_dlg[423].flags = (guysbuf[index].moveflags & move_new_movement) ? D_SELECTED : 0;
4983 enedata_dlg[424].flags = (guysbuf[index].moveflags & move_not_pushable) ? D_SELECTED : 0;
4984
4985 int32_t ret;
4986 guydata test;
4987 memset(&test, 0, sizeof(guydata));
4988
4989 large_dialog(enedata_dlg);
4990
4991 setEnemyLabels(guysbuf[index].family);
4992 setEnemyScriptLabels(guysbuf[index], npc_initd_labels, weapon_initd_labels);
4993
4994 popup_zqdialog_start();
4995 do
4996 {
4997 for(int32_t i=0; i<10; i++)
4998 {
4999 if(enedata_dlg[64+i].proc==jwin_droplist_proc)
5000 {
5001 int32_t size = 0;
5002 ((ListData*)enedata_dlg[64+i].dp)->listFunc(-1,&size);
5003 sprintf(attribs[i],"%d",vbound(atoi(attribs[i]), 0, size));
5004 enedata_dlg[64+i].d1 = atoi(attribs[i]);
5005 }
5006 else
5007 enedata_dlg[64+i].dp = attribs[i];
5008 }
5009 for ( int32_t q = 10; q < 16; q++ )
5010 {
5011 if (enedata_dlg[296+(q-10)].proc == jwin_droplist_proc)
5012 {
5013 int32_t size = 0;
5014 ((ListData*)enedata_dlg[296+(q-10)].dp)->listFunc(-1,&size);
5015 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5016 enedata_dlg[296+(q-10)].d1 = atoi(attribs[q]);
5017 }
5018 else
5019 enedata_dlg[296+(q-10)].dp = attribs[q];
5020 }
5021 for ( int32_t q = 16; q < 24; q++ )
5022 {
5023 if (enedata_dlg[310+(q-16)].proc == jwin_droplist_proc)
5024 {
5025 int32_t size = 0;
5026 ((ListData*)enedata_dlg[310+(q-16)].dp)->listFunc(-1,&size);
5027 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5028 enedata_dlg[310+(q-16)].d1 = atoi(attribs[q]);
5029 }
5030 else
5031 enedata_dlg[310+(q-16)].dp = attribs[q];
5032 }
5033 for ( int32_t q = 24; q < 32; q++ )
5034 {
5035 if (enedata_dlg[326+(q-24)].proc == jwin_droplist_proc)
5036 {
5037 int32_t size = 0;
5038 ((ListData*)enedata_dlg[326+(q-24)].dp)->listFunc(-1,&size);
5039 sprintf(attribs[q],"%d",vbound(atoi(attribs[q]), 0, size));
5040 enedata_dlg[326+(q-24)].d1 = atoi(attribs[q]);
5041 }
5042 else
5043 enedata_dlg[326+(q-24)].dp = attribs[q];
5044 }
5045
5046 enedata_dlg[278].dp = attribs[0];
5047 enedata_dlg[279].dp = attribs[1];
5048 enedata_dlg[280].dp = attribs[2];
5049 enedata_dlg[281].dp = attribs[3];
5050 enedata_dlg[282].dp = attribs[4];
5051 enedata_dlg[283].dp = attribs[5];
5052 enedata_dlg[284].dp = attribs[6];
5053 enedata_dlg[285].dp = attribs[7];
5054
5055 enedata_dlg[294].dp = attribs[8];
5056 enedata_dlg[295].dp = attribs[9];
5057
5058 enedata_dlg[296].dp = attribs[10];
5059 enedata_dlg[297].dp = attribs[11];
5060 enedata_dlg[298].dp = attribs[12];
5061 enedata_dlg[299].dp = attribs[13];
5062 enedata_dlg[300].dp = attribs[14];
5063 enedata_dlg[301].dp = attribs[15];
5064
5065 enedata_dlg[310].dp = attribs[16];
5066 enedata_dlg[311].dp = attribs[17];
5067 enedata_dlg[312].dp = attribs[18];
5068 enedata_dlg[313].dp = attribs[19];
5069 enedata_dlg[314].dp = attribs[20];
5070 enedata_dlg[315].dp = attribs[21];
5071 enedata_dlg[316].dp = attribs[22];
5072 enedata_dlg[317].dp = attribs[23];
5073
5074 enedata_dlg[326].dp = attribs[24];
5075 enedata_dlg[327].dp = attribs[25];
5076 enedata_dlg[328].dp = attribs[26];
5077 enedata_dlg[329].dp = attribs[27];
5078 enedata_dlg[330].dp = attribs[28];
5079 enedata_dlg[331].dp = attribs[29];
5080 enedata_dlg[332].dp = attribs[30];
5081 enedata_dlg[333].dp = attribs[31];
5082
5083 ret = do_zqdialog(enedata_dlg,3);
5084
5085
5086
5087 test.tile = enedata_dlg[247].d1;
5088 test.cset = enedata_dlg[247].d2;
5089 test.s_tile = enedata_dlg[248].d1;
5090 test.e_tile = enedata_dlg[249].d1;
5091
5092 test.width = vbound(atoi(w),0,20);
5093 test.height = vbound(atoi(h),0,20);
5094 test.s_width = vbound(atoi(sw),0,20);
5095 test.s_height = vbound(atoi(sh),0,20);
5096 test.e_width = vbound(atoi(ew),0,20);
5097 test.e_height = vbound(atoi(eh),0,20);
5098
5099 test.weapon = enedata_dlg[45].d1 != 0 ? biew[enedata_dlg[45].d1].i /*+ wEnemyWeapons*/ : wNone;
5100 test.family = bief[enedata_dlg[46].d1].i;
5101 test.anim = biea[enedata_dlg[47].d1].i;
5102 test.e_anim = biea[enedata_dlg[48].d1].i;
5103 test.item_set = enedata_dlg[49].d1;
5104
5105 test.hp = vbound(atoi(hp), 0, 32767); //0x7FFF, not 0xFFFF?
5106 test.dp = vbound(atoi(dp), 0, 32767);
5107 test.wdp = vbound(atoi(wdp), 0, 32767);
5108 test.grumble = vbound(atoi(grm), -4, 4);
5109
5110 test.rate = vbound(atoi(rat), 0, (test.family == eeFIRE || test.family == eeOTHER)?32767:16);
5111 test.hrate = vbound(atoi(hrt), 0, (test.family == eeFIRE || test.family == eeOTHER)?32767:16);
5112 test.homing = vbound(atoi(hom), -256, (test.family == eeFIRE || test.family == eeOTHER)?32767:256);
5113 test.step = vbound(atoi(spd),0, (test.family == eeFIRE || test.family == eeOTHER)?32767:1000);
5114
5115 test.frate = vbound(atoi(frt),0,256);
5116 test.e_frate = vbound(atoi(efr),0,256);
5117 test.bosspal = vbound(atoi(bsp),-1,29);
5118 test.bgsfx = enedata_dlg[182].d1;
5119 test.hitsfx = enedata_dlg[183].d1;
5120 test.deadsfx = enedata_dlg[184].d1;
5121
5122 // Sprites
5123 for(int32_t j=0; j<biw_cnt; j++)
5124 {
5125 if(enedata_dlg[236].d1 == j)
5126 test.wpnsprite = biw[j].i;
5127 if(enedata_dlg[394].d1 == j)
5128 test.spr_shadow = biw[j].i;
5129 if(enedata_dlg[396].d1 == j)
5130 test.spr_death = biw[j].i;
5131 if(enedata_dlg[398].d1 == j)
5132 test.spr_spawn = biw[j].i;
5133 }
5134
5135 test.attributes[0] = (enedata_dlg[64].proc == jwin_droplist_proc) ? enedata_dlg[64].d1 : atol(attribs[0]);
5136 test.attributes[1] = (enedata_dlg[65].proc==jwin_droplist_proc) ? enedata_dlg[65].d1 : atol(attribs[1]);
5137 test.attributes[2] = (enedata_dlg[66].proc==jwin_droplist_proc) ? enedata_dlg[66].d1 : atol(attribs[2]);
5138 test.attributes[3] = (enedata_dlg[67].proc==jwin_droplist_proc) ? enedata_dlg[67].d1 : atol(attribs[3]);
5139 test.attributes[4] = (enedata_dlg[68].proc==jwin_droplist_proc) ? enedata_dlg[68].d1 : atol(attribs[4]);
5140 test.attributes[5] = (enedata_dlg[69].proc==jwin_droplist_proc) ? enedata_dlg[69].d1 : atol(attribs[5]);
5141 test.attributes[6] = (enedata_dlg[70].proc==jwin_droplist_proc) ? enedata_dlg[70].d1 : atol(attribs[6]);
5142 test.attributes[7] = (enedata_dlg[71].proc==jwin_droplist_proc) ? enedata_dlg[71].d1 : atol(attribs[7]);
5143 test.attributes[8] = (enedata_dlg[72].proc==jwin_droplist_proc) ? enedata_dlg[72].d1 : atol(attribs[8]);
5144 test.attributes[9] = (enedata_dlg[73].proc==jwin_droplist_proc) ? enedata_dlg[73].d1 : atol(attribs[9]);
5145 test.attributes[10] = (enedata_dlg[296].proc==jwin_droplist_proc) ? enedata_dlg[296].d1 : atol(attribs[10]);
5146 test.attributes[11] = (enedata_dlg[297].proc==jwin_droplist_proc) ? enedata_dlg[297].d1 : atol(attribs[11]);
5147 test.attributes[12] = (enedata_dlg[298].proc==jwin_droplist_proc) ? enedata_dlg[298].d1 : atol(attribs[12]);
5148 test.attributes[13] = (enedata_dlg[299].proc==jwin_droplist_proc) ? enedata_dlg[299].d1 : atol(attribs[13]);
5149 test.attributes[14] = (enedata_dlg[300].proc==jwin_droplist_proc) ? enedata_dlg[300].d1 : atol(attribs[14]);
5150 test.attributes[15] = (enedata_dlg[301].proc==jwin_droplist_proc) ? enedata_dlg[301].d1 : atol(attribs[15]);
5151 test.attributes[16] = (enedata_dlg[310].proc==jwin_droplist_proc) ? enedata_dlg[310].d1 : atol(attribs[16]);
5152 test.attributes[17] = (enedata_dlg[311].proc==jwin_droplist_proc) ? enedata_dlg[311].d1 : atol(attribs[17]);
5153 test.attributes[18] = (enedata_dlg[312].proc==jwin_droplist_proc) ? enedata_dlg[312].d1 : atol(attribs[18]);
5154 test.attributes[19] = (enedata_dlg[313].proc==jwin_droplist_proc) ? enedata_dlg[313].d1 : atol(attribs[19]);
5155 test.attributes[20] = (enedata_dlg[314].proc==jwin_droplist_proc) ? enedata_dlg[314].d1 : atol(attribs[20]);
5156 test.attributes[21] = (enedata_dlg[315].proc==jwin_droplist_proc) ? enedata_dlg[315].d1 : atol(attribs[21]);
5157 test.attributes[22] = (enedata_dlg[316].proc==jwin_droplist_proc) ? enedata_dlg[316].d1 : atol(attribs[22]);
5158 test.attributes[23] = (enedata_dlg[317].proc==jwin_droplist_proc) ? enedata_dlg[317].d1 : atol(attribs[23]);
5159 test.attributes[24] = (enedata_dlg[326].proc==jwin_droplist_proc) ? enedata_dlg[326].d1 : atol(attribs[24]);
5160 test.attributes[25] = (enedata_dlg[327].proc==jwin_droplist_proc) ? enedata_dlg[327].d1 : atol(attribs[25]);
5161 test.attributes[26] = (enedata_dlg[328].proc==jwin_droplist_proc) ? enedata_dlg[328].d1 : atol(attribs[26]);
5162 test.attributes[27] = (enedata_dlg[329].proc==jwin_droplist_proc) ? enedata_dlg[329].d1 : atol(attribs[27]);
5163 test.attributes[28] = (enedata_dlg[330].proc==jwin_droplist_proc) ? enedata_dlg[330].d1 : atol(attribs[28]);
5164 test.attributes[29] = (enedata_dlg[331].proc==jwin_droplist_proc) ? enedata_dlg[331].d1 : atol(attribs[29]);
5165 test.attributes[30] = (enedata_dlg[332].proc==jwin_droplist_proc) ? enedata_dlg[332].d1 : atol(attribs[30]);
5166 test.attributes[31] = (enedata_dlg[333].proc==jwin_droplist_proc) ? enedata_dlg[333].d1 : atol(attribs[31]);
5167
5168
5169
5170 for(int32_t j=0; j <= edefBYRNA; j++)
5171 {
5172 test.defense[j] = enedata_dlg[j+161].d1;
5173 }
5174
5175 test.defense[edefWhistle] = enedata_dlg[192].d1;
5176 test.defense[edefSwitchHook] = enedata_dlg[416].d1;
5177 //Are the new defs missing here? -Z
5178
5179
5180 for(int32_t i=0; i<32; i++)
5181 test.flags |= (guy_flags)((enedata_dlg[74+i].flags & D_SELECTED) ? (1<<i) : 0);
5182
5183 test.flags &= ~(guy_fade_instant|guy_fade_flicker);
5184 test.flags |= (guy_flags)(enedata_dlg[186].d1==2 ? guy_fade_instant : enedata_dlg[186].d1==1 ? guy_fade_flicker : 0);
5185
5186 for(int32_t i=0; i<16; i++)
5187 test.flags2 |= (guy_flags2)((enedata_dlg[106+i].flags & D_SELECTED) ? (1<<i) : 0);
5188
5189 for(int32_t i=0; i<16; i++)
5190 test.flags2 |= (guy_flags2)((enedata_dlg[399+i].flags & D_SELECTED) ? (1<<(i+16)) : 0);
5191
5192 if(enedata_dlg[143].flags & D_SELECTED)
5193 {
5194 test.cset = 14;
5195 }
5196 //if we disable the box, revert to cset 8 -Z.
5197 else if(guysbuf[index].cset == 14 || test.cset == 14)
5198 {
5199 test.cset = 8;
5200 }
5201 test.defense[edefSCRIPT01] = enedata_dlg[203].d1;
5202 test.defense[edefSCRIPT02] = enedata_dlg[204].d1;
5203 test.defense[edefSCRIPT03] = enedata_dlg[205].d1;
5204 test.defense[edefSCRIPT04] = enedata_dlg[206].d1;
5205 test.defense[edefSCRIPT05] = enedata_dlg[207].d1;
5206 test.defense[edefSCRIPT06] = enedata_dlg[208].d1;
5207 test.defense[edefSCRIPT07] = enedata_dlg[209].d1;
5208 test.defense[edefSCRIPT08] = enedata_dlg[210].d1;
5209 test.defense[edefSCRIPT09] = enedata_dlg[211].d1;
5210 test.defense[edefSCRIPT10] = enedata_dlg[212].d1;
5211
5212 //tilewidth, tileheight, hitwidth, hitheight,
5213 test.txsz = atoi(tilex);
5214 test.tysz = atoi(tiley);
5215 test.hxsz = atoi(hitx);
5216 test.hysz = atoi(hity);
5217 test.hzsz = atoi(hitz);
5218 test.hxofs = atoi(hitofsx);
5219 test.hyofs = atoi(hitofsy);
5220 test.zofs = atoi(hitofsz);
5221 test.xofs = atoi(drawofsx);
5222 test.yofs = atoi(drawofsy); //This seems to be setting to +48 or something with any value set?! -Z
5223
5224 //override flags
5225 if(enedata_dlg[237].flags & D_SELECTED)
5226 test.SIZEflags |= guyflagOVERRIDE_HIT_WIDTH;
5227
5228 if(enedata_dlg[238].flags & D_SELECTED)
5229 test.SIZEflags |= guyflagOVERRIDE_HIT_HEIGHT;
5230
5231 if(enedata_dlg[239].flags & D_SELECTED)
5232 test.SIZEflags |= guyflagOVERRIDE_HIT_Z_HEIGHT;
5233
5234 if(enedata_dlg[240].flags & D_SELECTED)
5235 test.SIZEflags |= guyflagOVERRIDE_HIT_X_OFFSET;
5236
5237 if(enedata_dlg[241].flags & D_SELECTED)
5238 test.SIZEflags |= guyflagOVERRIDE_HIT_Y_OFFSET;
5239
5240 if(enedata_dlg[242].flags & D_SELECTED)
5241 test.SIZEflags |= guyflagOVERRIDE_DRAW_Z_OFFSET;
5242 if(enedata_dlg[243].flags & D_SELECTED)
5243 test.SIZEflags |= guyflagOVERRIDE_DRAW_X_OFFSET;
5244
5245 if(enedata_dlg[244].flags & D_SELECTED)
5246 test.SIZEflags |= guyflagOVERRIDE_DRAW_Y_OFFSET;
5247 if(enedata_dlg[245].flags & D_SELECTED)
5248 test.SIZEflags |= guyflagOVERRIDE_TILE_WIDTH;
5249 if(enedata_dlg[246].flags & D_SELECTED)
5250 test.SIZEflags |= guyflagOVERRIDE_TILE_HEIGHT;
5251
5252 //new 2.55 misc flags 1 to 16
5253 if(enedata_dlg[254].flags & D_SELECTED)
5254 test.editorflags |= ENEMY_FLAG1;
5255 if(enedata_dlg[255].flags & D_SELECTED)
5256 test.editorflags |= ENEMY_FLAG2;
5257 if(enedata_dlg[256].flags & D_SELECTED)
5258 test.editorflags |= ENEMY_FLAG3;
5259 if(enedata_dlg[257].flags & D_SELECTED)
5260 test.editorflags |= ENEMY_FLAG4;
5261 if(enedata_dlg[258].flags & D_SELECTED)
5262 test.editorflags |= ENEMY_FLAG5;
5263 if(enedata_dlg[259].flags & D_SELECTED)
5264 test.editorflags |= ENEMY_FLAG6;
5265 if(enedata_dlg[260].flags & D_SELECTED)
5266 test.editorflags |= ENEMY_FLAG7;
5267 if(enedata_dlg[261].flags & D_SELECTED)
5268 test.editorflags |= ENEMY_FLAG8;
5269 if(enedata_dlg[262].flags & D_SELECTED)
5270 test.editorflags |= ENEMY_FLAG9;
5271 if(enedata_dlg[263].flags & D_SELECTED)
5272 test.editorflags |= ENEMY_FLAG10;
5273 if(enedata_dlg[264].flags & D_SELECTED)
5274 test.editorflags |= ENEMY_FLAG11;
5275 if(enedata_dlg[265].flags & D_SELECTED)
5276 test.editorflags |= ENEMY_FLAG12;
5277 if(enedata_dlg[266].flags & D_SELECTED)
5278 test.editorflags |= ENEMY_FLAG13;
5279 if(enedata_dlg[267].flags & D_SELECTED)
5280 test.editorflags |= ENEMY_FLAG14;
5281 if(enedata_dlg[268].flags & D_SELECTED)
5282 test.editorflags |= ENEMY_FLAG15;
5283 if(enedata_dlg[269].flags & D_SELECTED)
5284 test.editorflags |= ENEMY_FLAG16;
5285
5286 //begin npc scripts
5287 test.script = binpcs[enedata_dlg[335].d1].second + 1;
5288 for ( int32_t q = 0; q < 8; q++ )
5289 {
5290 test.initD[q] = enedata_dlg[345+q].fg;
5291 test.weap_initiald[q] = enedata_dlg[361+q].fg;
5292 }
5293 //eweapon script
5294 test.weaponscript = bieweapons[enedata_dlg[370].d1].second + 1;
5295
5296 test.moveflags = move_none;
5297 if(enedata_dlg[371].flags & D_SELECTED)
5298 test.moveflags |= move_obeys_grav;
5299 if(enedata_dlg[372].flags & D_SELECTED)
5300 test.moveflags |= move_can_pitfall;
5301 if(enedata_dlg[373].flags & D_SELECTED)
5302 test.moveflags |= move_can_pitwalk;
5303 if(enedata_dlg[374].flags & D_SELECTED)
5304 test.moveflags |= move_can_waterdrown;
5305 if(enedata_dlg[375].flags & D_SELECTED)
5306 test.moveflags |= move_can_waterwalk;
5307 if(enedata_dlg[417].flags & D_SELECTED)
5308 test.moveflags |= move_only_waterwalk;
5309 if(enedata_dlg[418].flags & D_SELECTED)
5310 test.moveflags |= move_only_shallow_waterwalk;
5311 if(enedata_dlg[419].flags & D_SELECTED)
5312 test.moveflags |= move_only_pitwalk;
5313 if(enedata_dlg[420].flags & D_SELECTED)
5314 test.moveflags |= move_ignore_solidity;
5315 if(enedata_dlg[421].flags & D_SELECTED)
5316 test.moveflags |= move_ignore_blockflags;
5317 if(enedata_dlg[422].flags & D_SELECTED)
5318 test.moveflags |= move_ignore_screenedge;
5319 if(enedata_dlg[423].flags & D_SELECTED)
5320 test.moveflags |= move_new_movement;
5321 if(enedata_dlg[424].flags & D_SELECTED)
5322 test.moveflags |= move_not_pushable;
5323
5324 //end npc scripts
5325
5326 if(ret==252) //OK Button
5327 {
5328 strcpy(guy_string[index],name);
5329 guysbuf[index] = test;
5330 saved = false;
5331 }
5332 else if(ret==46)
5333 {
5334 setEnemyLabels(bief[enedata_dlg[46].d1].i);
5335 }
5336 else if(ret==178)
5337 {
5338 for(int32_t j=1; j <= edefBYRNA; j++)
5339 {
5340 enedata_dlg[j+161].d1 = enedata_dlg[161].d1;
5341 }
5342
5343 enedata_dlg[192].d1 = enedata_dlg[161].d1;
5344 //Clear to 0
5345 enedata_dlg[203].d1 = enedata_dlg[161].d1;
5346 enedata_dlg[204].d1 = enedata_dlg[161].d1;
5347 enedata_dlg[205].d1 = enedata_dlg[161].d1;
5348 enedata_dlg[206].d1 = enedata_dlg[161].d1;
5349 enedata_dlg[207].d1 = enedata_dlg[161].d1;
5350 enedata_dlg[208].d1 = enedata_dlg[161].d1;
5351 enedata_dlg[209].d1 = enedata_dlg[161].d1;
5352 enedata_dlg[210].d1 = enedata_dlg[161].d1;
5353 enedata_dlg[211].d1 = enedata_dlg[161].d1;
5354 enedata_dlg[212].d1 = enedata_dlg[161].d1;
5355 }
5356 else if (ret == 335 || ret == 370) // Script dropdowns
5357 {
5358 setEnemyScriptLabels(test, npc_initd_labels, weapon_initd_labels);
5359 }
5360 else if (ret >= 426 && ret <= 441) // InitD help buttons
5361 {
5362 showEnemyScriptMetaHelp(test, ret - 426);
5363 }
5364 }
5365 //252 == OK button, 253 == Cancel Button
5366 while(ret != 252 && ret != 253 && ret != 0);
5367 popup_zqdialog_end();
5368 }
5369
5370 extern DIALOG elist_dlg[];
5371 static int32_t copiedGuy;
5372
5373 int32_t readonenpc(PACKFILE *f, int32_t index)
5374 {
5375 dword section_version = 0;
5376 dword section_cversion = 0;
5377 int32_t zversion = 0;
5378 int32_t zbuild = 0;
5379 guydata tempguy;
5380 memset(&tempguy, 0, sizeof(guydata));
5381 //reset_itembuf(&tempitem,i);
5382
5383
5384 char npcstring[64]={0}; //guy_string[]
5385 //section version info
5386 if(!p_igetl(&zversion,f))
5387 {
5388 return 0;
5389 }
5390 if(!p_igetl(&zbuild,f))
5391 {
5392 return 0;
5393 }
5394
5395 if(!p_igetw(&section_version,f))
5396 {
5397 return 0;
5398 }
5399
5400 if(!p_igetw(&section_cversion,f))
5401 {
5402 return 0;
5403 }
5404 al_trace("readonenpc section_version: %d\n", section_version);
5405 al_trace("readonenpc section_cversion: %d\n", section_cversion);
5406
5407 if ( zversion > ZELDA_VERSION )
5408 {
5409 al_trace("Cannot read .znpc packfile made in ZC version (%x) in this version of ZC (%x)\n", zversion, ZELDA_VERSION);
5410 return 0;
5411 }
5412 else if ( ( section_version > V_GUYS ) || ( section_version == V_GUYS && section_cversion < CV_GUYS ) )
5413 {
5414 al_trace("Cannot read .znpc packfile made using V_GUYS (%d) subversion (%d)\n", section_version, section_cversion);
5415 return 0;
5416
5417 }
5418 else
5419 {
5420 al_trace("Reading a .znpc packfile made in ZC Version: %x, Build: %d\n", zversion, zbuild);
5421 }
5422
5423 if(!pfread(&npcstring, 64, f))
5424 {
5425 return 0;
5426 }
5427
5428 //section data
5429 if(!p_igetl(&tempguy.flags,f))
5430 {
5431 return 0;
5432 }
5433
5434 if(!p_igetl(&tempguy.flags2,f))
5435 {
5436 return 0;
5437 }
5438
5439 if(!p_igetl(&tempguy.tile,f))
5440 {
5441 return 0;
5442 }
5443
5444 if(!p_getc(&tempguy.width,f))
5445 {
5446 return 0;
5447 }
5448
5449 if(!p_getc(&tempguy.height,f))
5450 {
5451 return 0;
5452 }
5453
5454 if(!p_igetl(&tempguy.s_tile,f))
5455 {
5456 return 0;
5457 }
5458
5459 if(!p_getc(&tempguy.s_width,f))
5460 {
5461 return 0;
5462 }
5463
5464 if(!p_getc(&tempguy.s_height,f))
5465 {
5466 return 0;
5467 }
5468
5469 if(!p_igetl(&tempguy.e_tile,f))
5470 {
5471 return 0;
5472 }
5473
5474 if(!p_getc(&tempguy.e_width,f))
5475 {
5476 return 0;
5477 }
5478
5479 if(!p_getc(&tempguy.e_height,f))
5480 {
5481 return 0;
5482 }
5483
5484 if(!p_igetw(&tempguy.hp,f))
5485 {
5486 return 0;
5487 }
5488
5489 if(!p_igetw(&tempguy.family,f))
5490 {
5491 return 0;
5492 }
5493
5494 if(!p_igetw(&tempguy.cset,f))
5495 {
5496 return 0;
5497 }
5498
5499 if(!p_igetw(&tempguy.anim,f))
5500 {
5501 return 0;
5502 }
5503
5504 if(!p_igetw(&tempguy.e_anim,f))
5505 {
5506 return 0;
5507 }
5508
5509 if(!p_igetw(&tempguy.frate,f))
5510 {
5511 return 0;
5512 }
5513
5514 if(!p_igetw(&tempguy.e_frate,f))
5515 {
5516 return 0;
5517 }
5518
5519 if(!p_igetw(&tempguy.dp,f))
5520 {
5521 return 0;
5522 }
5523
5524 if(!p_igetw(&tempguy.wdp,f))
5525 {
5526 return 0;
5527 }
5528
5529 if(!p_igetw(&tempguy.weapon,f))
5530 {
5531 return 0;
5532 }
5533
5534 if(!p_igetw(&tempguy.rate,f))
5535 {
5536 return 0;
5537 }
5538
5539 if(!p_igetw(&tempguy.hrate,f))
5540 {
5541 return 0;
5542 }
5543
5544 if(!p_igetw(&tempguy.step,f))
5545 {
5546 return 0;
5547 }
5548
5549 if(!p_igetw(&tempguy.homing,f))
5550 {
5551 return 0;
5552 }
5553
5554 if(!p_igetw(&tempguy.grumble,f))
5555 {
5556 return 0;
5557 }
5558
5559 if(!p_igetw(&tempguy.item_set,f))
5560 {
5561 return 0;
5562 }
5563
5564 if(!p_igetw(&tempguy.bgsfx,f))
5565 {
5566 return 0;
5567 }
5568
5569 if(!p_igetw(&tempguy.bosspal,f))
5570 {
5571 return 0;
5572 }
5573
5574 if(!p_igetw(&tempguy.extend,f))
5575 {
5576 return 0;
5577 }
5578
5579 for(int32_t j=0; j < edefLAST; j++)
5580 {
5581 if(!p_getc(&tempguy.defense[j],f))
5582 {
5583 return 0;
5584 }
5585 }
5586
5587 if(!p_getc(&tempguy.hitsfx,f))
5588 {
5589 return 0;
5590 }
5591
5592 if(!p_getc(&tempguy.deadsfx,f))
5593 {
5594 return 0;
5595 }
5596
5597 if(!p_igetl(&tempguy.attributes[10],f))
5598 {
5599 return 0;
5600 }
5601
5602 if(!p_igetl(&tempguy.attributes[11],f))
5603 {
5604 return 0;
5605 }
5606
5607
5608 if ( zversion >= 0x255 )
5609 {
5610 if ( section_version >= 41 )
5611 {
5612 //New itemdata vars -Z
5613 //! version 27
5614
5615 //2.55 starts here
5616 for(int32_t j=edefLAST; j < edefLAST255; j++)
5617 {
5618 if(!p_getc(&tempguy.defense[j],f))
5619 {
5620 return 0;
5621 }
5622 }
5623
5624 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
5625 if(!p_igetl(&tempguy.txsz,f))
5626 {
5627 return 0;
5628 }
5629 if(!p_igetl(&tempguy.tysz,f))
5630 {
5631 return 0;
5632 }
5633 if(!p_igetl(&tempguy.hxsz,f))
5634 {
5635 return 0;
5636 }
5637 if(!p_igetl(&tempguy.hysz,f))
5638 {
5639 return 0;
5640 }
5641 if(!p_igetl(&tempguy.hzsz,f))
5642 {
5643 return 0;
5644 }
5645 // These are not fixed types, but ints, so they are safe to use here.
5646 if(!p_igetl(&tempguy.hxofs,f))
5647 {
5648 return 0;
5649 }
5650 if(!p_igetl(&tempguy.hyofs,f))
5651 {
5652 return 0;
5653 }
5654 if(!p_igetl(&tempguy.xofs,f))
5655 {
5656 return 0;
5657 }
5658 if(!p_igetl(&tempguy.yofs,f))
5659 {
5660 return 0;
5661 }
5662 if(!p_igetl(&tempguy.zofs,f))
5663 {
5664 return 0;
5665 }
5666 if(!p_igetl(&tempguy.wpnsprite,f))
5667 {
5668 return 0;
5669 }
5670 if(!p_igetl(&tempguy.SIZEflags,f))
5671 {
5672 return 0;
5673 }
5674 if(!p_igetl(&tempguy.frozentile,f))
5675 {
5676 return 0;
5677 }
5678 if(!p_igetl(&tempguy.frozencset,f))
5679 {
5680 return 0;
5681 }
5682 if(!p_igetl(&tempguy.frozenclock,f))
5683 {
5684 return 0;
5685 }
5686
5687 for ( int32_t q = 0; q < 10; q++ )
5688 {
5689 if(!p_igetw(&tempguy.frozenmisc[q],f))
5690 {
5691 return 0;
5692 }
5693 }
5694 if(!p_igetw(&tempguy.firesfx,f))
5695 {
5696 return 0;
5697 }
5698 for (int32_t q = 0; q < 32; q++)
5699 {
5700 if(!p_igetl(&tempguy.movement[q],f))
5701 {
5702 return 0;
5703 }
5704 }
5705 for ( int32_t q = 0; q < 32; q++ )
5706 {
5707 if(!p_igetl(&tempguy.new_weapon[q],f))
5708 {
5709 return 0;
5710 }
5711 }
5712 if(!p_igetw(&tempguy.script,f))
5713 {
5714 return 0;
5715 }
5716 for ( int32_t q = 0; q < 8; q++ )
5717 {
5718 if(!p_igetl(&tempguy.initD[q],f))
5719 {
5720 return 0;
5721 }
5722 }
5723 for ( int32_t q = 0; q < 2; q++ )
5724 {
5725 if(!p_igetl(&tempguy.initA[q],f))
5726 {
5727 return 0;
5728 }
5729 }
5730 if(!p_igetl(&tempguy.editorflags,f))
5731 {
5732 return 0;
5733 }
5734
5735 //Enemy Editor InitD[] labels
5736 for ( int32_t q = 0; q < 8; q++ )
5737 {
5738 for ( int32_t w = 0; w < 65; w++ )
5739 {
5740 if(!p_getc(&tempguy.initD_label[q][w],f))
5741 {
5742 return 0;
5743 }
5744 }
5745 for ( int32_t w = 0; w < 65; w++ )
5746 {
5747 if(!p_getc(&tempguy.weapon_initD_label[q][w],f))
5748 {
5749 return 0;
5750 }
5751 }
5752 }
5753 if(!p_igetw(&tempguy.weaponscript,f))
5754 {
5755 return 0;
5756 }
5757 //eweapon initD
5758 for ( int32_t q = 0; q < 8; q++ )
5759 {
5760 if(!p_igetl(&tempguy.weap_initiald[q],f))
5761 {
5762 return 0;
5763 }
5764 }
5765 //enemy editor misc merge
5766 for (int32_t q = 0; q < 32; q++)
5767 {
5768 if (!p_igetl(&tempguy.attributes[q], f)) return 0;
5769 }
5770 }
5771 }
5772 memcpy(&guysbuf[index], &tempguy, sizeof(guydata));
5773 //strcpy(item_string[index], istring);
5774 guysbuf[bie[index].i] = tempguy;
5775 strcpy(guy_string[bie[index].i], npcstring);
5776
5777 return 1;
5778 }
5779
5780 int32_t writeonenpc(PACKFILE *f, int32_t i)
5781 {
5782
5783 dword section_version=V_GUYS;
5784 dword section_cversion=CV_GUYS;
5785 int32_t zversion = ZELDA_VERSION;
5786 int32_t zbuild = VERSION_BUILD;
5787
5788
5789 //section version info
5790 if(!p_iputl(zversion,f))
5791 {
5792 return 0;
5793 }
5794 if(!p_iputl(zbuild,f))
5795 {
5796 return 0;
5797 }
5798 if(!p_iputw(section_version,f))
5799 {
5800 new_return(2);
5801 }
5802
5803 if(!p_iputw(section_cversion,f))
5804 {
5805 new_return(3);
5806 }
5807
5808 if(!pfwrite(guy_string[i], 64, f))
5809 {
5810 new_return(5);
5811 }
5812
5813 if(!p_iputl(guysbuf[i].flags,f))
5814 {
5815 return 0;
5816 }
5817
5818 if(!p_iputl(guysbuf[i].flags2,f))
5819 {
5820 return 0;
5821 }
5822
5823 if(!p_iputl(guysbuf[i].tile,f))
5824 {
5825 return 0;
5826 }
5827
5828 if(!p_putc(guysbuf[i].width,f))
5829 {
5830 return 0;
5831 }
5832
5833 if(!p_putc(guysbuf[i].height,f))
5834 {
5835 return 0;
5836 }
5837
5838 if(!p_iputl(guysbuf[i].s_tile,f))
5839 {
5840 return 0;
5841 }
5842
5843 if(!p_putc(guysbuf[i].s_width,f))
5844 {
5845 return 0;
5846 }
5847
5848 if(!p_putc(guysbuf[i].s_height,f))
5849 {
5850 return 0;
5851 }
5852
5853 if(!p_iputl(guysbuf[i].e_tile,f))
5854 {
5855 return 0;
5856 }
5857
5858 if(!p_putc(guysbuf[i].e_width,f))
5859 {
5860 return 0;
5861 }
5862
5863 if(!p_putc(guysbuf[i].e_height,f))
5864 {
5865 return 0;
5866 }
5867
5868 if(!p_iputw(guysbuf[i].hp,f))
5869 {
5870 return 0;
5871 }
5872
5873 if(!p_iputw(guysbuf[i].family,f))
5874 {
5875 return 0;
5876 }
5877
5878 if(!p_iputw(guysbuf[i].cset,f))
5879 {
5880 return 0;
5881 }
5882
5883 if(!p_iputw(guysbuf[i].anim,f))
5884 {
5885 return 0;
5886 }
5887
5888 if(!p_iputw(guysbuf[i].e_anim,f))
5889 {
5890 return 0;
5891 }
5892
5893 if(!p_iputw(guysbuf[i].frate,f))
5894 {
5895 return 0;
5896 }
5897
5898 if(!p_iputw(guysbuf[i].e_frate,f))
5899 {
5900 return 0;
5901 }
5902
5903 if(!p_iputw(guysbuf[i].dp,f))
5904 {
5905 return 0;
5906 }
5907
5908 if(!p_iputw(guysbuf[i].wdp,f))
5909 {
5910 return 0;
5911 }
5912
5913 if(!p_iputw(guysbuf[i].weapon,f))
5914 {
5915 return 0;
5916 }
5917
5918 if(!p_iputw(guysbuf[i].rate,f))
5919 {
5920 return 0;
5921 }
5922
5923 if(!p_iputw(guysbuf[i].hrate,f))
5924 {
5925 return 0;
5926 }
5927
5928 if(!p_iputw(guysbuf[i].step,f))
5929 {
5930 return 0;
5931 }
5932
5933 if(!p_iputw(guysbuf[i].homing,f))
5934 {
5935 return 0;
5936 }
5937
5938 if(!p_iputw(guysbuf[i].grumble,f))
5939 {
5940 return 0;
5941 }
5942
5943 if(!p_iputw(guysbuf[i].item_set,f))
5944 {
5945 return 0;
5946 }
5947
5948 if(!p_iputw(guysbuf[i].bgsfx,f))
5949 {
5950 return 0;
5951 }
5952
5953 if(!p_iputw(guysbuf[i].bosspal,f))
5954 {
5955 return 0;
5956 }
5957
5958 if(!p_iputw(guysbuf[i].extend,f))
5959 {
5960 return 0;
5961 }
5962
5963 for(int32_t j=0; j < edefLAST; j++)
5964 {
5965 if(!p_putc(guysbuf[i].defense[j],f))
5966 {
5967 return 0;
5968 }
5969 }
5970
5971 if(!p_putc(guysbuf[i].hitsfx,f))
5972 {
5973 return 0;
5974 }
5975
5976 if(!p_putc(guysbuf[i].deadsfx,f))
5977 {
5978 return 0;
5979 }
5980
5981 //2.55 starts here
5982 for(int32_t j=edefLAST; j < edefLAST255; j++)
5983 {
5984 if(!p_putc(guysbuf[i].defense[j],f))
5985 {
5986 return 0;
5987 }
5988 }
5989
5990 //tilewidth, tileheight, hitwidth, hitheight, hitzheight, hitxofs, hityofs, hitzofs
5991 if(!p_iputl(guysbuf[i].txsz,f))
5992 {
5993 return 0;
5994 }
5995 if(!p_iputl(guysbuf[i].tysz,f))
5996 {
5997 return 0;
5998 }
5999 if(!p_iputl(guysbuf[i].hxsz,f))
6000 {
6001 return 0;
6002 }
6003 if(!p_iputl(guysbuf[i].hysz,f))
6004 {
6005 return 0;
6006 }
6007 if(!p_iputl(guysbuf[i].hzsz,f))
6008 {
6009 return 0;
6010 }
6011 // These are not fixed types, but ints, so they are safe to use here.
6012 if(!p_iputl(guysbuf[i].hxofs,f))
6013 {
6014 return 0;
6015 }
6016 if(!p_iputl(guysbuf[i].hyofs,f))
6017 {
6018 return 0;
6019 }
6020 if(!p_iputl(guysbuf[i].xofs,f))
6021 {
6022 return 0;
6023 }
6024 if(!p_iputl(guysbuf[i].yofs,f))
6025 {
6026 return 0;
6027 }
6028 if(!p_iputl(guysbuf[i].zofs,f))
6029 {
6030 return 0;
6031 }
6032 if(!p_iputl(guysbuf[i].wpnsprite,f))
6033 {
6034 return 0;
6035 }
6036 if(!p_iputl(guysbuf[i].SIZEflags,f))
6037 {
6038 return 0;
6039 }
6040 if(!p_iputl(guysbuf[i].frozentile,f))
6041 {
6042 return 0;
6043 }
6044 if(!p_iputl(guysbuf[i].frozencset,f))
6045 {
6046 return 0;
6047 }
6048 if(!p_iputl(guysbuf[i].frozenclock,f))
6049 {
6050 return 0;
6051 }
6052
6053 for ( int32_t q = 0; q < 10; q++ )
6054 {
6055 if(!p_iputw(guysbuf[i].frozenmisc[q],f))
6056 {
6057 return 0;
6058 }
6059 }
6060 if(!p_iputw(guysbuf[i].firesfx,f))
6061 {
6062 return 0;
6063 }
6064 for ( int32_t q = 0; q < 32; q++ )
6065 {
6066 if(!p_iputl(guysbuf[i].movement[q],f))
6067 {
6068 return 0;
6069 }
6070 }
6071 for ( int32_t q = 0; q < 32; q++ )
6072 {
6073 if(!p_iputl(guysbuf[i].new_weapon[q],f))
6074 {
6075 return 0;
6076 }
6077 }
6078 if(!p_iputw(guysbuf[i].script,f))
6079 {
6080 return 0;
6081 }
6082 for ( int32_t q = 0; q < 8; q++ )
6083 {
6084 if(!p_iputl(guysbuf[i].initD[q],f))
6085 {
6086 return 0;
6087 }
6088 }
6089 for ( int32_t q = 0; q < 2; q++ )
6090 {
6091 if(!p_iputl(guysbuf[i].initA[q],f))
6092 {
6093 return 0;
6094 }
6095 }
6096 if(!p_iputl(guysbuf[i].editorflags,f))
6097 {
6098 return 0;
6099 }
6100
6101 //Enemy Editor InitD[] labels
6102 for ( int32_t q = 0; q < 8; q++ )
6103 {
6104 for ( int32_t w = 0; w < 65; w++ )
6105 {
6106 if(!p_putc(guysbuf[i].initD_label[q][w],f))
6107 {
6108 return 0;
6109 }
6110 }
6111 for ( int32_t w = 0; w < 65; w++ )
6112 {
6113 if(!p_putc(guysbuf[i].weapon_initD_label[q][w],f))
6114 {
6115 return 0;
6116 }
6117 }
6118 }
6119 if(!p_iputw(guysbuf[i].weaponscript,f))
6120 {
6121 return 0;
6122 }
6123 //eweapon initD
6124 for ( int32_t q = 0; q < 8; q++ )
6125 {
6126 if(!p_iputl(guysbuf[i].weap_initiald[q],f))
6127 {
6128 return 0;
6129 }
6130 }
6131 //enemy editor misc merge
6132 for (int32_t q = 0; q < 32; q++)
6133 {
6134 if (!p_iputl(guysbuf[i].attributes[q], f))
6135 {
6136 return 0;
6137 }
6138 }
6139 return 1;
6140 }
6141
6142
6143
6144
6145
6146
6147 void paste_enemy(int32_t index)
6148 {
6149 if(index < 0) index = elist_dlg[2].d1;
6150 if(index==0)
6151 return;
6152 if(copiedGuy<0) //Nothing copied
6153 return;
6154 guysbuf[bie[index].i]=guysbuf[copiedGuy];
6155 elist_dlg[2].flags|=D_DIRTY;
6156 saved=false;
6157 }
6158 void copy_enemy(int32_t index)
6159 {
6160 if(index < 0) index = elist_dlg[2].d1;
6161 if(index==0)
6162 return;
6163 copiedGuy=bie[index].i;
6164 }
6165 void save_enemy(int32_t index)
6166 {
6167 if(index < 0) index = elist_dlg[2].d1;
6168 if(index==0)
6169 return;
6170 if(!prompt_for_new_file_compat("Save NPC(.znpc)", "znpc", NULL,datapath,false))
6171 return;
6172 int32_t iid = bie[index].i;
6173
6174 PACKFILE *f=pack_fopen_password(temppath,F_WRITE, "");
6175 if(!f) return;
6176 if (!writeonenpc(f,iid))
6177 {
6178 Z_error("Could not write to .znpc packfile %s\n", temppath);
6179 InfoDialog("ZNPC Error", "Could not save the specified enemy.").show();
6180 }
6181 pack_fclose(f);
6182 }
6183 void load_enemy(int32_t index)
6184 {
6185 if(index < 0) index = elist_dlg[2].d1;
6186 if(index==0)
6187 return;
6188 if(!prompt_for_existing_file_compat("Load NPC(.znpc)", "znpc", NULL,datapath,false))
6189 return;
6190 PACKFILE *f=pack_fopen_password(temppath,F_READ, "");
6191 if(!f) return;
6192
6193 if (!readonenpc(f,index))
6194 {
6195 al_trace("Could not read from .znpc packfile %s\n", temppath);
6196 InfoDialog("ZNPC Error", "Could not load the specified enemy.").show();
6197 }
6198
6199 pack_fclose(f);
6200 elist_dlg[2].flags|=D_DIRTY;
6201 saved=false;
6202 }
6203
6204
6205 void elist_rclick_func(int32_t index, int32_t x, int32_t y)
6206 {
6207 if(index == 0)
6208 return;
6209
6210 NewMenu rcmenu {
6211 { "&Copy", [&](){copy_enemy(index);} },
6212 { "Paste", "&v", [&](){paste_enemy(index);}, 0, copiedGuy <= 0 },
6213 { "&Save", [&](){save_enemy(index);} },
6214 { "&Load", [&](){load_enemy(index);} },
6215 };
6216 rcmenu.pop(x, y);
6217 }
6218
6219 int32_t onCustomEnemies()
6220 {
6221 /*
6222 char *hold = item_string[0];
6223 item_string[0] = "rupee (1)";
6224 */
6225
6226 int32_t foo;
6227 int32_t index = select_enemy("Select Enemy",bie[0].i,true,true,foo);
6228
6229 while(index >= 0)
6230 {
6231 //I can't get the fucking dialog to handle a simple copy paste so I stuck it here else I'm going to rage kill something.
6232 //,,.Someone feel free to fix the thing properly later on.
6233 //Right now creating custom enemies remains a int32_t painful process, but it shouldn't be this hard for users to use.
6234 //-Two cents worth. -Gleeok
6235 if(key[KEY_OPENBRACE]) //copy
6236 {
6237 if(index != 0)
6238 copiedGuy=index;
6239 }
6240 else if(key[KEY_CLOSEBRACE]) //paste
6241 {
6242 if(copiedGuy>0 && index!=0)
6243 {
6244 guysbuf[index]=guysbuf[copiedGuy];
6245 saved=false;
6246 }
6247 }
6248 else
6249 {
6250 if(index != 0)
6251 {
6252 edit_enemydata(index);
6253 }
6254 }
6255
6256 index = select_enemy("Select Enemy",index,true,true,foo);
6257 }
6258
6259 refresh(rMAP+rCOMBOS);
6260 return D_O_K;
6261 }
6262
6263
6264 int32_t onCustomGuys()
6265 {
6266 return D_O_K;
6267 }
6268
6269 int32_t d_ltile_proc(int32_t msg,DIALOG *d,int32_t c);
6270 static int32_t herotile_land_walk_list[] =
6271 {
6272 // dialog control number
6273 11, 12, 13, 14, 15, 16, 17, 18, -1
6274 };
6275
6276 static int32_t herotile_land_slash_list[] =
6277 {
6278 // dialog control number
6279 19, 20, 21, 22, 23, 24, 25, 26, -1
6280 };
6281
6282 static int32_t herotile_land_stab_list[] =
6283 {
6284 // dialog control number
6285 27, 28, 29, 30, 31, 32, 33, 34, -1
6286 };
6287
6288 static int32_t herotile_land_pound_list[] =
6289 {
6290 // dialog control number
6291 35, 36, 37, 38, 39, 40, 41, 42, -1
6292 };
6293
6294 static int32_t herotile_land_hold_list[] =
6295 {
6296 // dialog control number
6297 43, 44, 45, 46, -1
6298 };
6299
6300 static int32_t herotile_land_cast_list[] =
6301 {
6302 // dialog control number
6303 47, -1
6304 };
6305
6306 static int32_t herotile_land_fall_list[] =
6307 {
6308 // dialog control number
6309 105, 106, 107, 108, 109, 110, 111, 112, -1
6310 };
6311
6312 static int32_t herotile_land_liftwalk_list[] =
6313 {
6314 // dialog control number
6315 260, 261, 262, 263, 264, 265, 266, 267, -1
6316 };
6317 static int32_t herotile_land_lift_list[] =
6318 {
6319 // dialog control number
6320 268, 269, 270, 271, 272, 273, 274, 275,
6321 276, 277, 278, 279, 280, 281, 282, 283,
6322 284, 285, -1
6323 };
6324
6325 static int32_t herotile_land_jump_list[] =
6326 {
6327 // dialog control number
6328 77, 78, 79, 80, 81, 82, 83, 84, -1
6329 };
6330
6331 static int32_t herotile_land_charge_list[] =
6332 {
6333 // dialog control number
6334 85, 86, 87, 88, 89, 90, 91, 92, -1
6335 };
6336
6337 static int32_t herotile_land_revslash_list[] =
6338 {
6339 // dialog control number
6340 252, 253, 254, 255, 256, 257, 258, 259, -1
6341 };
6342
6343 static TABPANEL herotile_land_tabs[] =
6344 {
6345 // (text)
6346 { (char *)"Walk", D_SELECTED, herotile_land_walk_list, 0, NULL },
6347 { (char *)"Slash", 0, herotile_land_slash_list, 0, NULL },
6348 { (char *)"Slash 2", 0, herotile_land_revslash_list, 0, NULL },
6349 { (char *)"Stab", 0, herotile_land_stab_list, 0, NULL },
6350 { (char *)"Pound", 0, herotile_land_pound_list, 0, NULL },
6351 { (char *)"Jump", 0, herotile_land_jump_list, 0, NULL },
6352 { (char *)"Charge", 0, herotile_land_charge_list, 0, NULL },
6353 { (char *)"Hold", 0, herotile_land_hold_list, 0, NULL },
6354 { (char *)"Cast", 0, herotile_land_cast_list, 0, NULL },
6355 { (char *)"Falling", 0, herotile_land_fall_list, 0, NULL },
6356 { (char *)"Lifting", 0, herotile_land_lift_list, 0, NULL },
6357 { (char *)"Lift+Walk", 0, herotile_land_liftwalk_list, 0, NULL },
6358 { NULL, 0, NULL, 0, NULL }
6359 };
6360
6361 static int32_t herotile_water_float_list[] =
6362 {
6363 // dialog control number
6364 48, 49, 50, 51, 52, 53, 54, 55, -1
6365 };
6366
6367 static int32_t herotile_water_swim_list[] =
6368 {
6369 // dialog control number
6370 56, 57, 58, 59, 60, 61, 62, 63, -1
6371 };
6372
6373 static int32_t herotile_water_dive_list[] =
6374 {
6375 // dialog control number
6376 64, 65, 66, 67, 68, 69, 70, 71, -1
6377 };
6378
6379 static int32_t herotile_water_hold_list[] =
6380 {
6381 // dialog control number
6382 72, 73, 74, 75, -1
6383 };
6384
6385 static int32_t herotile_water_drown_list[] =
6386 {
6387 // dialog control number
6388 97, 98, 99, 100, 101, 102, 103, 104, -1
6389 };
6390
6391 static int32_t herotile_lava_drown_list[] =
6392 {
6393 // dialog control number
6394 113, 114, 115, 116, 117, 118, 119, 120, -1
6395 };
6396
6397 static TABPANEL herotile_water_tabs[] =
6398 {
6399 // (text)
6400 { (char *)"Float", D_SELECTED, herotile_water_float_list, 0, NULL },
6401 { (char *)"Swim", 0, herotile_water_swim_list, 0, NULL },
6402 { (char *)"Dive", 0, herotile_water_dive_list, 0, NULL },
6403 { (char *)"Drown", 0, herotile_water_drown_list, 0, NULL },
6404 { (char *)"Hold", 0, herotile_water_hold_list, 0, NULL },
6405 { (char *)"Lava Drown", 0, herotile_lava_drown_list, 0, NULL },
6406 { NULL, 0, NULL, 0, NULL }
6407 };
6408
6409 static int32_t herotile_sidewater_swim_list[] =
6410 {
6411 // dialog control number
6412 196, 197, 198, 199, 200, 201, 202, 203, -1
6413 };
6414
6415 static int32_t herotile_sidewater_slash_list[] =
6416 {
6417 // dialog control number
6418 204, 205, 206, 207, 208, 209, 210, 211, -1
6419 };
6420
6421 static int32_t herotile_sidewater_stab_list[] =
6422 {
6423 // dialog control number
6424 212, 213, 214, 215, 216, 217, 218, 219, -1
6425 };
6426
6427 static int32_t herotile_sidewater_pound_list[] =
6428 {
6429 // dialog control number
6430 220, 221, 222, 223, 224, 225, 226, 227, 236, 237, 238, 239, 240, 241, 242, 243,-1
6431 };
6432
6433 static int32_t herotile_sidewater_charge_list[] =
6434 {
6435 // dialog control number
6436 228, 229, 230, 231, 232, 233, 234, 235, -1
6437 };
6438
6439 static int32_t herotile_sidewater_hold_list[] =
6440 {
6441 // dialog control number
6442 244,245,246,247,248,249,250,251, -1
6443 };
6444
6445 static TABPANEL herotile_sidewater_tabs[] =
6446 {
6447 // (text)
6448 { (char *)"Swim", D_SELECTED, herotile_sidewater_swim_list, 0, NULL },
6449 { (char *)"S. Slash", 0, herotile_sidewater_slash_list, 0, NULL },
6450 { (char *)"S. Stab", 0, herotile_sidewater_stab_list, 0, NULL },
6451 { (char *)"S. Pound", 0, herotile_sidewater_pound_list, 0, NULL },
6452 { (char *)"S. Charge", 0, herotile_sidewater_charge_list, 0, NULL },
6453 { (char *)"S. Misc", 0, herotile_sidewater_hold_list, 0, NULL },
6454 { NULL, 0, NULL, 0, NULL }
6455 };
6456
6457 static int32_t herotile_defense_enemy1_list[] =
6458 {
6459 //dialog control number
6460 122, 123, 124, 125, 126, 127, 128, 129, 130, 145, 146, 147, 148, 149, 150, 151, 152, 153, 168, -1
6461 };
6462
6463 static int32_t herotile_defense_enemy2_list[] =
6464 {
6465 //dialog control number
6466 131, 132, 133, 134, 135, 136, 137, 138, 154, 155, 156, 157, 158, 159, 160, 161, -1
6467 };
6468
6469 static int32_t herotile_defense_other1_list[] =
6470 {
6471 //dialog control number
6472 139, 140, 141, 142, 143, 144, 162, 163, 164, 165, 166, 167, -1
6473 };
6474
6475 static int32_t herotile_defense_script_list[] =
6476 {
6477 //dialog control number
6478 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, -1
6479 };
6480
6481 static TABPANEL herotile_defense_tabs[] =
6482 {
6483 // (text)
6484 { (char*)"Enemy 1", D_SELECTED, herotile_defense_enemy1_list, 0, NULL },
6485 { (char*)"Enemy 2", 0, herotile_defense_enemy2_list, 0, NULL },
6486 { (char*)"Other", 0, herotile_defense_other1_list, 0, NULL },
6487 { (char*)"Script", 0, herotile_defense_script_list, 0, NULL },
6488 { NULL, 0, NULL, 0, NULL }
6489 };
6490
6491
6492 static int32_t herotile_land_list[] =
6493 {
6494 // dialog control number
6495 9, -1
6496 };
6497
6498 static int32_t herotile_water_list[] =
6499 {
6500 // dialog control number
6501 10, -1
6502 };
6503
6504 static int32_t herotile_sidewater_list[] =
6505 {
6506 // dialog control number
6507 195, -1
6508 };
6509
6510 static int32_t herotile_defense_list[] =
6511 {
6512 // dialog control number
6513 121, -1
6514 };
6515
6516 static int32_t herotile_option_list[] =
6517 {
6518 // dialog control number
6519 189, 190, 191, 192, 193, 194, -1
6520 };
6521
6522 static TABPANEL herotile_tabs[] =
6523 {
6524 // (text)
6525 { (char *)"Sprites (Land)", D_SELECTED, herotile_land_list, 0, NULL },
6526 { (char *)"Sprites (Liquid)", 0, herotile_water_list, 0, NULL },
6527 { (char *)"Sprites (Side Liquid)", 0, herotile_sidewater_list, 0, NULL },
6528 { (char *)"Defenses", 0, herotile_defense_list, 0, NULL},
6529 { (char *)"Options", 0, herotile_option_list, 0, NULL },
6530 { NULL, 0, NULL, 0, NULL }
6531 };
6532
6533 const char *animationstyles[las_max]= { "Original", "BS-Zelda", "Zelda 3", "Zelda 3 (Slow Walk)" };
6534
6535 const char *animationstylelist(int32_t index, int32_t *list_size)
6536 {
6537 if(index>=0)
6538 {
6539 return animationstyles[index];
6540 }
6541
6542 *list_size=las_max;
6543 return NULL;
6544 }
6545
6546 const char *swimspeeds[2]= { "Slow", "Fast" };
6547
6548 const char *swimspeedlist(int32_t index, int32_t *list_size)
6549 {
6550 if(index>=0)
6551 {
6552 return swimspeeds[index];
6553 }
6554
6555 *list_size=2;
6556 return NULL;
6557 }
6558
6559 int32_t jwin_as_droplist_proc(int32_t msg,DIALOG *d,int32_t c)
6560 {
6561 int32_t ret = jwin_droplist_proc(msg,d,c);
6562
6563 switch(msg)
6564 {
6565 case MSG_CHAR:
6566 case MSG_CLICK:
6567 zinit.heroAnimationStyle=d->d1;
6568
6569 if(zinit.heroAnimationStyle==las_zelda3slow)
6570 {
6571 hero_animation_speed=2;
6572 }
6573 else
6574 {
6575 hero_animation_speed=1;
6576 }
6577 }
6578
6579 return ret;
6580 }
6581
6582 9 static ListData animationstyle_list(animationstylelist, &font);
6583 9 static ListData swimspeed_list(swimspeedlist, &font);
6584
6585 static DIALOG herotile_dlg[] =
6586 {
6587 // (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3)
6588 9 { jwin_win_proc, 0, 0, 320, 240, vc(14), vc(1), 0, D_EXIT, 0, 0, (void *) "Player Sprites", NULL, NULL },
6589 9 { d_vsync_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
6590 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F1, 0, (void *) onHelp, NULL, NULL },
6591 9 { jwin_button_proc, 90, 220, 61, 21, vc(14), vc(1), 13, D_EXIT, 0, 0, (void *) "OK", NULL, NULL },
6592 9 { jwin_button_proc, 170, 220, 61, 21, vc(14), vc(1), 27, D_EXIT, 0, 0, (void *) "Cancel", NULL, NULL },
6593 // 5
6594 9 { d_dummy_proc, 217, 200, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Large Player Hit Box", NULL, NULL },
6595 9 { d_dummy_proc, 4, 201, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Animation Style:", NULL, NULL },
6596 9 { d_dummy_proc, 77, 197, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &animationstyle_list, NULL, NULL },
6597 9 { jwin_tab_proc, 4, 17, 312, 200, 0, 0, 0, 0, 0, 0, (void *) herotile_tabs, NULL, (void *)herotile_dlg },
6598 // 9
6599 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_land_tabs, NULL, (void *)herotile_dlg },
6600 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_water_tabs, NULL, (void *)herotile_dlg },
6601 // 11 (walk sprite titles)
6602 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6603 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6604 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6605 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6606 // 15 (walk sprites)
6607 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_walk, NULL, NULL, NULL },
6608 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_walk, NULL, NULL, NULL },
6609 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_walk, NULL, NULL, NULL },
6610 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_walk, NULL, NULL, NULL },
6611 // 19 (slash spritetitles)
6612 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6613 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6614 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6615 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6616 // 23 (slash sprites)
6617 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_slash, NULL, NULL, NULL },
6618 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_slash, NULL, NULL, NULL },
6619 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_slash, NULL, NULL, NULL },
6620 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_slash, NULL, NULL, NULL },
6621 // 27 (stab sprite titles)
6622 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6623 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6624 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6625 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6626 // 31 (stab sprites)
6627 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_stab, NULL, NULL, NULL },
6628 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_stab, NULL, NULL, NULL },
6629 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_stab, NULL, NULL, NULL },
6630 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_stab, NULL, NULL, NULL },
6631 // 35 (pound sprite titles)
6632 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6633 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6634 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6635 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6636 // 39 (pound sprites)
6637 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_pound, NULL, NULL, NULL },
6638 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_pound, NULL, NULL, NULL },
6639 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_pound, NULL, NULL, NULL },
6640 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_pound, NULL, NULL, NULL },
6641 // 43 (hold sprite titles)
6642 9 { jwin_rtext_proc, 67, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "One Hand", NULL, NULL },
6643 9 { jwin_rtext_proc, 67, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Two Hands", NULL, NULL },
6644 // 45 (hold sprites)
6645 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_landhold1, NULL, NULL, NULL },
6646 9 { d_ltile_proc, 70, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_landhold2, NULL, NULL, NULL },
6647 // 47 (casting sprites)
6648 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_cast, NULL, NULL, NULL },
6649
6650 // 48 (float sprite titles)
6651 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6652 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6653 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6654 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6655 // 52 (float sprites)
6656 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_float, NULL, NULL, NULL },
6657 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_float, NULL, NULL, NULL },
6658 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_float, NULL, NULL, NULL },
6659 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_float, NULL, NULL, NULL },
6660 // 56 (swim sprite titles)
6661 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6662 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6663 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6664 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6665 // 60 (swim sprites)
6666 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_swim, NULL, NULL, NULL },
6667 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_swim, NULL, NULL, NULL },
6668 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_swim, NULL, NULL, NULL },
6669 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_swim, NULL, NULL, NULL },
6670 // 64 (dive sprite titles)
6671 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6672 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6673 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6674 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6675 // 68 (dive sprites)
6676 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_dive, NULL, NULL, NULL },
6677 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_dive, NULL, NULL, NULL },
6678 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_dive, NULL, NULL, NULL },
6679 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_dive, NULL, NULL, NULL },
6680 // 72 (hold sprite titles)
6681 9 { jwin_rtext_proc, 67, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "One Hand", NULL, NULL },
6682 9 { jwin_rtext_proc, 67, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Two Hands", NULL, NULL },
6683 // 74 (hold sprites)
6684 9 { d_ltile_proc, 70, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_waterhold1, NULL, NULL, NULL },
6685 9 { d_ltile_proc, 70, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_waterhold2, NULL, NULL, NULL },
6686 9 { d_dummy_proc, 217, 186, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Diagonal Movement", NULL, NULL },
6687 // 77 (jump sprite titles)
6688 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6689 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6690 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6691 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6692 // 81 (jump sprites)
6693 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_jump, NULL, NULL, NULL },
6694 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_jump, NULL, NULL, NULL },
6695 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_jump, NULL, NULL, NULL },
6696 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_jump, NULL, NULL, NULL },
6697 // 85 (charge sprite titles)
6698 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6699 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6700 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6701 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6702 // 89 (charge sprites)
6703 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_charge, NULL, NULL, NULL },
6704 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_charge, NULL, NULL, NULL },
6705 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_charge, NULL, NULL, NULL },
6706 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_charge, NULL, NULL, NULL },
6707 // 93
6708 9 { d_timer_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL },
6709 9 { d_dummy_proc, 4, 183, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void *) "Swim Speed:", NULL, NULL },
6710 9 { d_dummy_proc, 77, 179, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void *) &swimspeed_list, NULL, NULL },
6711 9 { d_keyboard_proc, 0, 0, 0, 0, 0, 0, 0, 0, KEY_F12, 0, (void *) onSnapshot, NULL, NULL },
6712 // 97 (drown sprite titles)
6713 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6714 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6715 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6716 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6717 // 101 (drown sprites)
6718 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_drown, NULL, NULL, NULL },
6719 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_drown, NULL, NULL, NULL },
6720 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_drown, NULL, NULL, NULL },
6721 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_drown, NULL, NULL, NULL },
6722 // 105 (falling sprite titles)
6723 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6724 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6725 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6726 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6727 // 109 (falling sprites)
6728 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_falling, NULL, NULL, NULL },
6729 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_falling, NULL, NULL, NULL },
6730 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_falling, NULL, NULL, NULL },
6731 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_falling, NULL, NULL, NULL },
6732
6733 // 113 (lavadrown sprite titles)
6734 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6735 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6736 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6737 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6738 // 117 (lavadrown sprites)
6739 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_lavadrown, NULL, NULL, NULL },
6740 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_lavadrown, NULL, NULL, NULL },
6741 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_lavadrown, NULL, NULL, NULL },
6742 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_lavadrown, NULL, NULL, NULL },
6743
6744 // DEFENSE TAB BEGINS
6745 // 121 (Player defenses)
6746 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void*)herotile_defense_tabs, NULL, (void*)herotile_dlg },
6747 // 122 - Enemy weapons (currently 17)
6748 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Fireball Defense:", NULL, NULL },
6749 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Arrow Defense:", NULL, NULL },
6750 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Boomerang Defense:", NULL, NULL },
6751 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Sword Beam Defense:", NULL, NULL },
6752 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Rock Defense:", NULL, NULL },
6753 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Magic Defense:", NULL, NULL },
6754 9 { jwin_text_proc, 9, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Bomb (object) Defense:", NULL, NULL },
6755 9 { jwin_text_proc, 9, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"S. Bomb (object) Defense:", NULL, NULL },
6756 9 { jwin_text_proc, 9, 198, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Bomb (explode) Defense:", NULL, NULL },
6757 // 131 - Enemy weapons page 2
6758 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"S. Bomb (explode) Defense:", NULL, NULL },
6759 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame Trail Defense:", NULL, NULL },
6760 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame Defense:", NULL, NULL },
6761 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Wind Defense:", NULL, NULL },
6762 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame 2 Defense:", NULL, NULL },
6763 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Flame 2 Trail Defense:", NULL, NULL },
6764 9 { jwin_text_proc, 9, 162, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Ice Defense:", NULL, NULL },
6765 9 { jwin_text_proc, 9, 180, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Fireball 2 Defense:", NULL, NULL },
6766 // 139 - Other weapons (Currently 6)
6767 9 { jwin_text_proc, 9, 54, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Candle Fire Defense:", NULL, NULL },
6768 9 { jwin_text_proc, 9, 72, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Player Bomb Defense:", NULL, NULL },
6769 9 { jwin_text_proc, 9, 90, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Magic Defense:", NULL, NULL },
6770 9 { jwin_text_proc, 9, 108, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Fireball Defense:", NULL, NULL },
6771 9 { jwin_text_proc, 9, 126, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Rock Defense:", NULL, NULL },
6772 9 { jwin_text_proc, 9, 144, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Refl. Sword Beam Defense:", NULL, NULL },
6773 // 145 - Enemy weapons pulldown
6774 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6775 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6776 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6777 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6778 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6779 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6780 9 { jwin_droplist_proc, 126, 162 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6781 9 { jwin_droplist_proc, 126, 180 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6782 9 { jwin_droplist_proc, 126, 198 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6783 // 154 - Enemy weapons pulldown page 2
6784 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6785 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6786 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6787 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6788 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6789 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6790 9 { jwin_droplist_proc, 126, 162 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6791 9 { jwin_droplist_proc, 126, 180 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6792 // 162 - Other weapon pulldown
6793 9 { jwin_droplist_proc, 126, 54 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6794 9 { jwin_droplist_proc, 126, 72 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6795 9 { jwin_droplist_proc, 126, 90 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6796 9 { jwin_droplist_proc, 126, 108 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6797 9 { jwin_droplist_proc, 126, 126 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6798 9 { jwin_droplist_proc, 126, 144 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6799 // 168 - Set all button
6800 9 { jwin_button_proc, 255, 54 - 4, 48, 16, vc(14), vc(1), 13, D_EXIT, 0, 0, (void*)"Set All", NULL, NULL },
6801
6802
6803 // 169 - Script 1
6804 9 { jwin_text_proc, 9, 51, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 1 Defense:", NULL, NULL },
6805 9 { jwin_text_proc, 9, 67, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 2 Defense:", NULL, NULL },
6806 9 { jwin_text_proc, 9, 83, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 3 Defense:", NULL, NULL },
6807 9 { jwin_text_proc, 9, 99, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 4 Defense:", NULL, NULL },
6808 9 { jwin_text_proc, 9, 115, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 5 Defense:", NULL, NULL },
6809 9 { jwin_text_proc, 9, 131, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 6 Defense:", NULL, NULL },
6810 9 { jwin_text_proc, 9, 147, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 7 Defense:", NULL, NULL },
6811 9 { jwin_text_proc, 9, 163, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 8 Defense:", NULL, NULL },
6812 9 { jwin_text_proc, 9, 179, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 9 Defense:", NULL, NULL },
6813 9 { jwin_text_proc, 9, 196, 80, 8, vc(14), vc(1), 0, 0, 0, 0, (void*)"Custom Weapon 10 Defense:", NULL, NULL },
6814 //179 script 1 pulldown
6815
6816 /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */
6817 9 { jwin_droplist_proc, 126, 51 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6818 9 { jwin_droplist_proc, 126, 67 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6819 9 { jwin_droplist_proc, 126, 83 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6820 9 { jwin_droplist_proc, 126, 99 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6821 9 { jwin_droplist_proc, 126, 115 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6822 9 { jwin_droplist_proc, 126, 131 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6823 9 { jwin_droplist_proc, 126, 147 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6824 9 { jwin_droplist_proc, 126, 163 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6825 9 { jwin_droplist_proc, 126, 179 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6826 9 { jwin_droplist_proc, 126, 196 - 4, 115, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&defense_list, NULL, NULL },
6827 // 189 - Options relocated to handle new tab
6828 9 { jwin_check_proc, 9, 78, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Large Player Hit Box", NULL, NULL },
6829 9 { jwin_text_proc, 9, 38, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Animation Style:", NULL, NULL },
6830 9 { jwin_as_droplist_proc, 89, 34, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&animationstyle_list, NULL, NULL },
6831 9 { jwin_check_proc, 9, 90, 0, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Diagonal Movement", NULL, NULL },
6832 9 { jwin_text_proc, 9, 54, 17, 9, vc(14), vc(1), 0, 0, 1, 0, (void*)"Swim Speed:", NULL, NULL },
6833 9 { jwin_droplist_proc, 89, 50, 78, 16, jwin_pal[jcTEXTFG], jwin_pal[jcTEXTBG], 0, 0, 0, 0, (void*)&swimspeed_list, NULL, NULL },
6834 //195 Sideview water tab
6835 9 { jwin_tab_proc, 7, 33, 305, 183, 0, 0, 0, 0, 0, 0, (void *) herotile_sidewater_tabs, NULL, (void *)herotile_dlg },
6836 // 196 (sideswim sprite titles)
6837 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6838 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6839 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6840 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6841 // 200 (sideswim sprites)
6842 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswim, NULL, NULL, NULL },
6843 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswim, NULL, NULL, NULL },
6844 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswim, NULL, NULL, NULL },
6845 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswim, NULL, NULL, NULL },
6846 // 204 (sideswim slash sprite titles)
6847 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6848 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6849 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6850 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6851 // 208 (sideswim slash sprites)
6852 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimslash, NULL, NULL, NULL },
6853 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimslash, NULL, NULL, NULL },
6854 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimslash, NULL, NULL, NULL },
6855 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimslash, NULL, NULL, NULL },
6856 // 212 (sideswim stab sprite titles)
6857 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6858 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6859 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6860 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6861 // 216 (sideswim stab sprites)
6862 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimstab, NULL, NULL, NULL },
6863 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimstab, NULL, NULL, NULL },
6864 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimstab, NULL, NULL, NULL },
6865 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimstab, NULL, NULL, NULL },
6866 // 220 (sideswim pound sprite titles)
6867 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6868 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6869 9 { jwin_rtext_proc, 33, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6870 9 { jwin_rtext_proc, 101, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6871 // 224 (sideswim pound sprites)
6872 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimpound, NULL, NULL, NULL },
6873 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimpound, NULL, NULL, NULL },
6874 9 { d_ltile_proc, 36, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimpound, NULL, NULL, NULL },
6875 9 { d_ltile_proc, 104, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimpound, NULL, NULL, NULL },
6876 // 228 (sideswim charge sprite titles)
6877 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6878 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6879 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6880 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6881 // 232 (sideswim charge sprites)
6882 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimcharge, NULL, NULL, NULL },
6883 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sideswimcharge, NULL, NULL, NULL },
6884 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sideswimcharge, NULL, NULL, NULL },
6885 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_sideswimcharge, NULL, NULL, NULL },
6886 // 236 (swim hammer offset titles)
6887 9 { jwin_rtext_proc, 40, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6888 9 { jwin_rtext_proc, 108, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6889 9 { jwin_rtext_proc, 40, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6890 9 { jwin_rtext_proc, 108, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Hammer Ofs.", NULL, NULL },
6891 // 240 (swim hammer offset fields)
6892 9 { jwin_edit_proc, 43, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6893 9 { jwin_edit_proc, 111, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6894 9 { jwin_edit_proc, 43, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6895 9 { jwin_edit_proc, 111, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6896 // 244 (hold sprite titles)
6897 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "1 Hand", NULL, NULL },
6898 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Casting", NULL, NULL },
6899 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "2 Hands", NULL, NULL },
6900 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Drown", NULL, NULL },
6901 // 248 (hold sprites)
6902 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sidewaterhold1, NULL, NULL, NULL },
6903 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_sideswimcast, NULL, NULL, NULL },
6904 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_sidewaterhold2, NULL, NULL, NULL },
6905 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_sidedrown, NULL, NULL, NULL },
6906 // 252 (revslash sprite titles)
6907 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6908 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6909 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6910 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6911 // 256 (revslash sprites)
6912 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_revslash, NULL, NULL, NULL },
6913 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_revslash, NULL, NULL, NULL },
6914 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_revslash, NULL, NULL, NULL },
6915 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_revslash, NULL, NULL, NULL },
6916 // 260 (lifting)
6917 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6918 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6919 9 { jwin_rtext_proc, 33, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6920 9 { jwin_rtext_proc, 101, 126, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6921 // 264 (lift sprites)
6922 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_liftwalk, NULL, NULL, NULL },
6923 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_liftwalk, NULL, NULL, NULL },
6924 9 { d_ltile_proc, 36, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_liftwalk, NULL, NULL, NULL },
6925 9 { d_ltile_proc, 104, 112, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_liftwalk, NULL, NULL, NULL },
6926 // 268 (lifting)
6927 9 { jwin_rtext_proc, 33, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Up", NULL, NULL },
6928 9 { jwin_rtext_proc, 101, 88, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Down", NULL, NULL },
6929 9 { jwin_rtext_proc, 33, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Left", NULL, NULL },
6930 9 { jwin_rtext_proc, 101, 142, 32, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Right", NULL, NULL },
6931 // 272 (lift sprites)
6932 9 { d_ltile_proc, 36, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, up, ls_lifting, NULL, NULL, NULL },
6933 9 { d_ltile_proc, 104, 74, 40, 40, 6, jwin_pal[jcBOX], 0, 0, down, ls_lifting, NULL, NULL, NULL },
6934 9 { d_ltile_proc, 36, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, left, ls_lifting, NULL, NULL, NULL },
6935 9 { d_ltile_proc, 104, 128, 40, 40, 6, jwin_pal[jcBOX], 0, 0, right, ls_lifting, NULL, NULL, NULL },
6936 // 276 (lift frame count labels)
6937 9 { jwin_rtext_proc, 40, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6938 9 { jwin_rtext_proc, 108, 116, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6939 9 { jwin_rtext_proc, 40, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6940 9 { jwin_rtext_proc, 108, 170, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Num Frames", NULL, NULL },
6941 // 280 (lift frame count fields)
6942 9 { jwin_edit_proc, 43, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6943 9 { jwin_edit_proc, 111, 113, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6944 9 { jwin_edit_proc, 43, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6945 9 { jwin_edit_proc, 111, 167, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6946 // 284 (lift speed preview value)
6947 9 { jwin_rtext_proc, 60, 58, 64, 8, jwin_pal[jcBOXFG], jwin_pal[jcBOX], 0, 0, 0, 0, (void *) "Preview Speed", NULL, NULL },
6948 9 { jwin_edit_proc, 63, 55, 20, 16, vc(12), vc(1), 0, 0, 4, 0, NULL, NULL, NULL },
6949
6950 9 { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }
6951
6952 };
6953
6954 static char liftspeed[4] = "4";
6955 int32_t d_ltile_proc(int32_t msg,DIALOG *d,int32_t)
6956 {
6957 //d1=dir
6958 //d2=type (determines how to animate)
6959 //fg=cset (6)
6960 enum {lt_clock, lt_tile, lt_flip, lt_extend, lt_frames};
6961 static int32_t bg=makecol(0, 0, 0);
6962 int32_t *p=(int32_t*)d->dp3;
6963 int32_t oldtile=0;
6964 int32_t oldflip=0;
6965
6966 switch(msg)
6967 {
6968 case MSG_START:
6969 {
6970 d->dp3=(int32_t*)malloc(sizeof(int32_t)*5);
6971 p=(int32_t*)d->dp3;
6972 p[lt_clock]=0;
6973 p[lt_tile]=0;
6974 p[lt_flip]=0;
6975 p[lt_extend]=0;
6976 p[lt_frames]=0;
6977 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
6978 if(d->d2 == ls_lifting)
6979 p[lt_frames] = vbound(atoi((char*)herotile_dlg[280+d->d1].dp),1,255);
6980 break;
6981 }
6982
6983 case MSG_CLICK:
6984 {
6985 int32_t t;
6986 int32_t f;
6987 int32_t extend;
6988 int32_t cs = 6;
6989 herotile(&t, &f, &extend, d->d2, d->d1, zinit.heroAnimationStyle);
6990
6991 switch(extend)
6992 {
6993 case 0:
6994 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+2+4, d->x+32+8+2, d->y+(16+32)+2))
6995 {
6996 return D_O_K;
6997 }
6998
6999 break;
7000
7001 case 1:
7002 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+2+4, d->x+(32)+8+2, d->y+(4+64)+2))
7003 {
7004 return D_O_K;
7005 }
7006
7007 break;
7008
7009 case 2:
7010 if(!isinRect(gui_mouse_x(),gui_mouse_y(),d->x+2+8, d->y+4, d->x+(64)+8+2, d->y+(4+64)+2))
7011 {
7012 return D_O_K;
7013 }
7014
7015 break;
7016 }
7017
7018 if((CHECK_CTRL_CMD)
7019 ? select_tile_2(t,f,2,cs,false,extend,true)
7020 : select_tile(t,f,2,cs,false,extend,true))
7021 {
7022 extend=ex;
7023 setherotile(t,f,extend,d->d2,d->d1);
7024 return D_REDRAW;
7025 }
7026 }
7027 break;
7028
7029 case MSG_VSYNC:
7030 {
7031 oldtile=p[lt_tile];
7032 oldflip=p[lt_flip];
7033 p[lt_clock]++;
7034 auto lspeed = vbound(atoi(liftspeed),1,255);
7035 if(d->d2 == ls_lifting)
7036 p[lt_frames] = vbound(atoi((char*)herotile_dlg[280+d->d1].dp),1,255);
7037
7038 switch(zinit.heroAnimationStyle)
7039 {
7040 case las_original: //2-frame
7041 switch(d->d2)
7042 {
7043 case ls_charge:
7044 case ls_walk:
7045 {
7046 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7047
7048 if(p[lt_clock]>=6)
7049 {
7050 if(d->d1==up&&d->d2==ls_walk)
7051 {
7052 p[lt_flip]=1; //h flip
7053 }
7054 else
7055 {
7056 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7057 }
7058 };
7059
7060 if(p[lt_clock]>=11)
7061 {
7062 p[lt_clock]=-1;
7063 }
7064
7065 break;
7066 }
7067
7068 case ls_sideswim:
7069 case ls_sideswimcharge:
7070 {
7071 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7072
7073 if(p[lt_clock]>=6)
7074 {
7075 if(d->d1==up&&d->d2==ls_sideswim)
7076 {
7077 p[lt_flip]=1; //h flip
7078 }
7079 else
7080 {
7081 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7082 }
7083 };
7084
7085 if(p[lt_clock]>=11)
7086 {
7087 p[lt_clock]=-1;
7088 }
7089
7090 break;
7091 }
7092
7093 case ls_sideswimslash:
7094 {
7095 if(p[lt_clock]<6)
7096 {
7097 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
7098 }
7099 else if(p[lt_clock]<12)
7100 {
7101 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7102 }
7103 else if(p[lt_clock]<13)
7104 {
7105 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7106 }
7107 else
7108 {
7109 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7110 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7111
7112 if(p[lt_clock]>=16)
7113 {
7114 p[lt_clock]=-1;
7115 }
7116 };
7117
7118 break;
7119 }
7120
7121 case ls_sideswimstab:
7122 {
7123 if(p[lt_clock]<12)
7124 {
7125 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7126 }
7127 else if(p[lt_clock]<13)
7128 {
7129 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7130 }
7131 else
7132 {
7133 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7134 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7135
7136 if(p[lt_clock]>=16)
7137 {
7138 p[lt_clock]=-1;
7139 }
7140 };
7141
7142 break;
7143 }
7144
7145 case ls_sideswimpound:
7146 {
7147 if(p[lt_clock]<12)
7148 {
7149 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
7150 }
7151 else if(p[lt_clock]<30)
7152 {
7153 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7154 }
7155 else
7156 {
7157 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7158
7159 if(p[lt_clock]>=31)
7160 {
7161 p[lt_clock]=-1;
7162 }
7163 };
7164
7165 break;
7166 }
7167
7168 case ls_jump:
7169 {
7170 if(p[lt_clock]>=24)
7171 {
7172 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7173
7174 if(p[lt_clock]>=36)
7175 {
7176 p[lt_clock]=-1;
7177 }
7178 }
7179 else
7180 {
7181 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7182 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7183 }
7184
7185 break;
7186 }
7187
7188 case ls_slash:
7189 {
7190 if(p[lt_clock]<6)
7191 {
7192 herotile(&p[lt_tile], &p[lt_flip], ls_slash, d->d1, zinit.heroAnimationStyle);
7193 }
7194 else if(p[lt_clock]<12)
7195 {
7196 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7197 }
7198 else if(p[lt_clock]<13)
7199 {
7200 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7201 }
7202 else
7203 {
7204 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7205 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7206
7207 if(p[lt_clock]>=16)
7208 {
7209 p[lt_clock]=-1;
7210 }
7211 };
7212
7213 break;
7214 }
7215
7216 case ls_revslash:
7217 {
7218 if(p[lt_clock]<6)
7219 {
7220 herotile(&p[lt_tile], &p[lt_flip], ls_revslash, d->d1, zinit.heroAnimationStyle);
7221 }
7222 else if(p[lt_clock]<12)
7223 {
7224 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7225 }
7226 else if(p[lt_clock]<13)
7227 {
7228 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7229 }
7230 else
7231 {
7232 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7233 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7234
7235 if(p[lt_clock]>=16)
7236 {
7237 p[lt_clock]=-1;
7238 }
7239 };
7240
7241 break;
7242 }
7243
7244 case ls_stab:
7245 {
7246 if(p[lt_clock]<12)
7247 {
7248 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7249 }
7250 else if(p[lt_clock]<13)
7251 {
7252 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7253 }
7254 else
7255 {
7256 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7257 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7258
7259 if(p[lt_clock]>=16)
7260 {
7261 p[lt_clock]=-1;
7262 }
7263 };
7264
7265 break;
7266 }
7267
7268 case ls_pound:
7269 {
7270 if(p[lt_clock]<12)
7271 {
7272 herotile(&p[lt_tile], &p[lt_flip], ls_pound, d->d1, zinit.heroAnimationStyle);
7273 }
7274 else if(p[lt_clock]<30)
7275 {
7276 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7277 }
7278 else
7279 {
7280 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7281
7282 if(p[lt_clock]>=31)
7283 {
7284 p[lt_clock]=-1;
7285 }
7286 };
7287
7288 break;
7289 }
7290
7291 case ls_float:
7292 {
7293 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7294
7295 if(p[lt_clock]>=12)
7296 {
7297 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7298 };
7299
7300 if(p[lt_clock]>=23)
7301 {
7302 p[lt_clock]=-1;
7303 }
7304
7305 break;
7306 }
7307
7308 case ls_swim:
7309 {
7310 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
7311
7312 if(p[lt_clock]>=12)
7313 {
7314 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7315 };
7316
7317 if(p[lt_clock]>=23)
7318 {
7319 p[lt_clock]=-1;
7320 }
7321
7322 break;
7323 }
7324
7325 case ls_dive:
7326 {
7327 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
7328
7329 if(p[lt_clock]>=50)
7330 {
7331 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7332 };
7333
7334 if((p[lt_clock]/12)&1)
7335 {
7336 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7337 };
7338
7339 if(p[lt_clock]>=81)
7340 {
7341 p[lt_clock]=-1;
7342 }
7343
7344 break;
7345 }
7346
7347 case ls_drown:
7348 {
7349 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
7350
7351 if(p[lt_clock]<=4)
7352 {
7353 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7354 };
7355
7356 if((p[lt_clock]/12)&1)
7357 {
7358 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7359 };
7360
7361 if(p[lt_clock]>=81)
7362 {
7363 p[lt_clock]=-1;
7364 }
7365
7366 break;
7367 }
7368 case ls_sidedrown:
7369 {
7370 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
7371
7372
7373 if((p[lt_clock]/12)&1)
7374 {
7375 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7376 };
7377
7378 if(p[lt_clock]>=81)
7379 {
7380 p[lt_clock]=-1;
7381 }
7382
7383 if(p[lt_clock]<=4)
7384 {
7385 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7386 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7387 };
7388 break;
7389 }
7390
7391 case ls_lavadrown:
7392 {
7393 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
7394
7395 if(p[lt_clock]<=4)
7396 {
7397 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7398 };
7399
7400 if((p[lt_clock]/12)&1)
7401 {
7402 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7403 };
7404
7405 if(p[lt_clock]>=81)
7406 {
7407 p[lt_clock]=-1;
7408 }
7409
7410 break;
7411 }
7412
7413 case ls_falling:
7414 {
7415 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
7416 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
7417 break;
7418 }
7419
7420 case ls_landhold1:
7421 {
7422 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
7423 break;
7424 }
7425
7426 case ls_landhold2:
7427 {
7428 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7429 break;
7430 }
7431
7432 case ls_waterhold1:
7433 {
7434 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
7435 break;
7436 }
7437
7438 case ls_waterhold2:
7439 {
7440 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
7441 break;
7442 }
7443
7444 case ls_sidewaterhold1:
7445 {
7446 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
7447 break;
7448 }
7449
7450 case ls_sidewaterhold2:
7451 {
7452 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7453 break;
7454 }
7455
7456 case ls_cast:
7457 {
7458 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
7459
7460 if(p[lt_clock]<96)
7461 {
7462 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7463 };
7464
7465 if(p[lt_clock]>=194)
7466 {
7467 p[lt_clock]=-1;
7468 }
7469
7470 break;
7471 }
7472
7473 case ls_sideswimcast:
7474 {
7475 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
7476
7477 if(p[lt_clock]<96)
7478 {
7479 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7480 };
7481
7482 if(p[lt_clock]>=194)
7483 {
7484 p[lt_clock]=-1;
7485 }
7486
7487 break;
7488 }
7489
7490 case ls_lifting:
7491 {
7492 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
7493 size_t fr = p[lt_clock] / lspeed;
7494 if(fr >= p[lt_frames])
7495 {
7496 fr = 0;
7497 p[lt_clock] = -1;
7498 }
7499 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
7500 break;
7501 }
7502 case ls_liftwalk:
7503 {
7504 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
7505 if(p[lt_clock]>=6)
7506 {
7507 if(d->d1==up)
7508 {
7509 p[lt_flip]=1; //h flip
7510 }
7511 else
7512 {
7513 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7514 }
7515 };
7516
7517 if(p[lt_clock]>=11)
7518 {
7519 p[lt_clock]=-1;
7520 }
7521 break;
7522 }
7523
7524 default:
7525 break;
7526 }
7527
7528 break;
7529
7530 case las_bszelda: //3-frame BS
7531 switch(d->d2)
7532 {
7533 case ls_charge:
7534 case ls_walk:
7535 {
7536 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7537 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7538
7539 if(p[lt_clock]>=27)
7540 {
7541 p[lt_clock]=-1;
7542 }
7543
7544 break;
7545 }
7546
7547 case ls_sideswim:
7548 case ls_sideswimcharge:
7549 {
7550 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7551 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7552
7553 if(p[lt_clock]>=27)
7554 {
7555 p[lt_clock]=-1;
7556 }
7557
7558 break;
7559 }
7560
7561 case ls_sideswimslash:
7562 {
7563 if(p[lt_clock]<6)
7564 {
7565 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
7566 }
7567 else if(p[lt_clock]<12)
7568 {
7569 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7570 }
7571 else if(p[lt_clock]<13)
7572 {
7573 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7574 }
7575 else
7576 {
7577 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7578 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7579
7580 if(p[lt_clock]>=16)
7581 {
7582 p[lt_clock]=-1;
7583 }
7584 };
7585
7586 break;
7587 }
7588
7589 case ls_sideswimstab:
7590 {
7591 if(p[lt_clock]<12)
7592 {
7593 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7594 }
7595 else if(p[lt_clock]<13)
7596 {
7597 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7598 }
7599 else
7600 {
7601 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7602 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7603
7604 if(p[lt_clock]>=16)
7605 {
7606 p[lt_clock]=-1;
7607 }
7608 };
7609
7610 break;
7611 }
7612
7613 case ls_sideswimpound:
7614 {
7615 if(p[lt_clock]<12)
7616 {
7617 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
7618 }
7619 else if(p[lt_clock]<30)
7620 {
7621 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
7622 }
7623 else
7624 {
7625 herotile(&p[lt_tile], &p[lt_flip], ls_sideswim, d->d1, zinit.heroAnimationStyle);
7626
7627 if(p[lt_clock]>=31)
7628 {
7629 p[lt_clock]=-1;
7630 }
7631 };
7632
7633 break;
7634 }
7635
7636 case ls_jump:
7637 {
7638 if(p[lt_clock]>=24)
7639 {
7640 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7641
7642 if(p[lt_clock]>=36)
7643 {
7644 p[lt_clock]=-1;
7645 }
7646 }
7647 else
7648 {
7649 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7650 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7651 }
7652
7653 break;
7654 }
7655
7656 case ls_slash:
7657 {
7658 if(p[lt_clock]<6)
7659 {
7660 herotile(&p[lt_tile], &p[lt_flip], ls_slash, d->d1, zinit.heroAnimationStyle);
7661 }
7662 else if(p[lt_clock]<12)
7663 {
7664 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7665 }
7666 else if(p[lt_clock]<13)
7667 {
7668 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7669 }
7670 else
7671 {
7672 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7673 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7674
7675 if(p[lt_clock]>=16)
7676 {
7677 p[lt_clock]=-1;
7678 }
7679 };
7680
7681 break;
7682 }
7683
7684 case ls_revslash:
7685 {
7686 if(p[lt_clock]<6)
7687 {
7688 herotile(&p[lt_tile], &p[lt_flip], ls_revslash, d->d1, zinit.heroAnimationStyle);
7689 }
7690 else if(p[lt_clock]<12)
7691 {
7692 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7693 }
7694 else if(p[lt_clock]<13)
7695 {
7696 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7697 }
7698 else
7699 {
7700 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7701 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7702
7703 if(p[lt_clock]>=16)
7704 {
7705 p[lt_clock]=-1;
7706 }
7707 };
7708
7709 break;
7710 }
7711
7712 case ls_stab:
7713 {
7714 if(p[lt_clock]<12)
7715 {
7716 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7717 }
7718 else if(p[lt_clock]<13)
7719 {
7720 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7721 }
7722 else
7723 {
7724 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
7725 p[lt_extend]==2?p[lt_tile]+=2:p[lt_tile]++; //tile++
7726
7727 if(p[lt_clock]>=16)
7728 {
7729 p[lt_clock]=-1;
7730 }
7731 };
7732
7733 break;
7734 }
7735
7736 case ls_pound:
7737 {
7738 if(p[lt_clock]<12)
7739 {
7740 herotile(&p[lt_tile], &p[lt_flip], ls_pound, d->d1, zinit.heroAnimationStyle);
7741 }
7742 else if(p[lt_clock]<30)
7743 {
7744 herotile(&p[lt_tile], &p[lt_flip], ls_stab, d->d1, zinit.heroAnimationStyle);
7745 }
7746 else
7747 {
7748 herotile(&p[lt_tile], &p[lt_flip], ls_walk, d->d1, zinit.heroAnimationStyle);
7749
7750 if(p[lt_clock]>=31)
7751 {
7752 p[lt_clock]=-1;
7753 }
7754 };
7755
7756 break;
7757 }
7758
7759 case ls_float:
7760 {
7761 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7762 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7763
7764 if(p[lt_clock]>=55)
7765 {
7766 p[lt_clock]=-1;
7767 }
7768
7769 break;
7770 }
7771
7772 case ls_swim:
7773 {
7774 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
7775 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7776
7777 if(p[lt_clock]>=55)
7778 {
7779 p[lt_clock]=-1;
7780 }
7781
7782 break;
7783 }
7784
7785 case ls_dive:
7786 {
7787 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
7788
7789 if(p[lt_clock]>=50)
7790 {
7791 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7792 };
7793
7794 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7795
7796 if(p[lt_clock]>=81)
7797 {
7798 p[lt_clock]=-1;
7799 }
7800
7801 break;
7802 }
7803
7804 case ls_drown:
7805 {
7806 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
7807
7808 if(p[lt_clock]<=4)
7809 {
7810 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7811 };
7812
7813 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7814
7815 if(p[lt_clock]>=81)
7816 {
7817 p[lt_clock]=-1;
7818 }
7819
7820 break;
7821 }
7822
7823 case ls_sidedrown:
7824 {
7825 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
7826 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7827
7828 if(p[lt_clock]<=4)
7829 {
7830 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
7831 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
7832 };
7833
7834
7835 if(p[lt_clock]>=81)
7836 {
7837 p[lt_clock]=-1;
7838 }
7839
7840 break;
7841 }
7842
7843 case ls_lavadrown:
7844 {
7845 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
7846
7847 if(p[lt_clock]<=4)
7848 {
7849 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
7850 };
7851
7852 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7853
7854 if(p[lt_clock]>=81)
7855 {
7856 p[lt_clock]=-1;
7857 }
7858
7859 break;
7860 }
7861
7862 case ls_falling:
7863 {
7864 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
7865 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
7866 break;
7867 }
7868
7869 case ls_landhold1:
7870 {
7871 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
7872 break;
7873 }
7874
7875 case ls_landhold2:
7876 {
7877 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7878 break;
7879 }
7880
7881 case ls_waterhold1:
7882 {
7883 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
7884 break;
7885 }
7886
7887 case ls_waterhold2:
7888 {
7889 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
7890 break;
7891 }
7892
7893 case ls_sidewaterhold1:
7894 {
7895 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
7896 break;
7897 }
7898
7899 case ls_sidewaterhold2:
7900 {
7901 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7902 break;
7903 }
7904
7905 case ls_cast:
7906 {
7907 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
7908
7909 if(p[lt_clock]<96)
7910 {
7911 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
7912 }
7913
7914 if(p[lt_clock]>=194)
7915 {
7916 p[lt_clock]=-1;
7917 }
7918
7919 break;
7920 }
7921
7922 case ls_sideswimcast:
7923 {
7924 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
7925
7926 if(p[lt_clock]<96)
7927 {
7928 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
7929 };
7930
7931 if(p[lt_clock]>=194)
7932 {
7933 p[lt_clock]=-1;
7934 }
7935
7936 break;
7937 }
7938
7939 case ls_lifting:
7940 {
7941 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
7942 size_t fr = p[lt_clock] / lspeed;
7943 if(fr >= p[lt_frames])
7944 {
7945 fr = 0;
7946 p[lt_clock] = -1;
7947 }
7948 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
7949 break;
7950 }
7951 case ls_liftwalk:
7952 {
7953 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
7954 p[lt_tile]+=anim_3_4(p[lt_clock],7)*(p[lt_extend]==2?2:1);
7955
7956 if(p[lt_clock]>=27)
7957 {
7958 p[lt_clock]=-1;
7959 }
7960 break;
7961 }
7962
7963 default:
7964 break;
7965 }
7966 break;
7967
7968 case las_zelda3slow: //multi-frame Zelda 3 (slow)
7969 case las_zelda3: //multi-frame Zelda 3
7970 switch(d->d2)
7971 {
7972 case ls_charge:
7973 case ls_walk:
7974 {
7975 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7976
7977 if(p[lt_clock]>=(64*(hero_animation_speed)))
7978 {
7979 p[lt_tile]+=(p[lt_extend]==2?2:1);
7980
7981 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
7982 l-=((l>3)?1:0)+((l>12)?1:0);
7983 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
7984
7985 //p[lt_tile]+=(((p[lt_clock]>>2)%8)*(p[lt_extend]==2?2:1));
7986 if(p[lt_clock]>=255)
7987 {
7988 p[lt_clock]=-1;
7989 }
7990 }
7991
7992 break;
7993 }
7994 case ls_sideswim:
7995 case ls_sideswimcharge:
7996 {
7997 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], d->d2, d->d1, zinit.heroAnimationStyle);
7998
7999 if(p[lt_clock]>=(64*(hero_animation_speed)))
8000 {
8001 p[lt_tile]+=(p[lt_extend]==2?2:1);
8002
8003 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8004 l-=((l>3)?1:0)+((l>12)?1:0);
8005 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8006
8007 //p[lt_tile]+=(((p[lt_clock]>>2)%8)*(p[lt_extend]==2?2:1));
8008 if(p[lt_clock]>=255)
8009 {
8010 p[lt_clock]=-1;
8011 }
8012 }
8013
8014 break;
8015
8016 case ls_sideswimstab:
8017 {
8018 if(p[lt_clock]>35)
8019 {
8020 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimstab, d->d1, zinit.heroAnimationStyle);
8021 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8022
8023 if(p[lt_clock]>=47)
8024 {
8025 p[lt_clock]=-1;
8026 }
8027 }
8028 else
8029 {
8030 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8031 }
8032
8033 break;
8034 }
8035
8036 case ls_sideswimslash:
8037 {
8038 if(p[lt_clock]>23)
8039 {
8040 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimslash, d->d1, zinit.heroAnimationStyle);
8041 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8042
8043 if(p[lt_clock]>=47)
8044 {
8045 p[lt_clock]=-1;
8046 }
8047 }
8048 else
8049 {
8050 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8051 }
8052
8053 break;
8054 }
8055
8056 case ls_sideswimpound:
8057 {
8058 if(p[lt_clock]>35)
8059 {
8060 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswimpound, d->d1, zinit.heroAnimationStyle);
8061 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8062
8063 if(p[lt_clock]>=47)
8064 {
8065 p[lt_clock]=-1;
8066 }
8067 }
8068 else
8069 {
8070 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sideswim, d->d1, zinit.heroAnimationStyle);
8071 }
8072
8073 break;
8074 }
8075
8076 case ls_jump:
8077 {
8078 if(p[lt_clock]>=24)
8079 {
8080 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8081
8082 if(p[lt_clock]>=36)
8083 {
8084 p[lt_clock]=-1;
8085 }
8086 }
8087 else
8088 {
8089 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8090 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8091 }
8092
8093 break;
8094 }
8095
8096 case ls_slash:
8097 {
8098 if(p[lt_clock]>23) //24 frames, advances by one every 4 frames, 6 tiles total
8099 {
8100 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_slash, d->d1, zinit.heroAnimationStyle);
8101 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8102
8103 if(p[lt_clock]>=47)
8104 {
8105 p[lt_clock]=-1;
8106 }
8107 }
8108 else
8109 {
8110 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8111 }
8112
8113 break;
8114 }
8115
8116 case ls_revslash:
8117 {
8118 if(p[lt_clock]>23) //24 frames, advances by one every 4 frames, 6 tiles total
8119 {
8120 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_revslash, d->d1, zinit.heroAnimationStyle);
8121 p[lt_tile]+=(((p[lt_clock]>>2)%6)*(p[lt_extend]==2?2:1));
8122
8123 if(p[lt_clock]>=47)
8124 {
8125 p[lt_clock]=-1;
8126 }
8127 }
8128 else
8129 {
8130 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8131 }
8132
8133 break;
8134 }
8135
8136 case ls_stab: //12 frames, advances by one every 4 frames, 3 tiles total.
8137 if(p[lt_clock]>35)
8138 {
8139 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_stab, d->d1, zinit.heroAnimationStyle);
8140 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8141
8142 if(p[lt_clock]>=47)
8143 {
8144 p[lt_clock]=-1;
8145 }
8146 }
8147 else
8148 {
8149 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8150 }
8151
8152 break;
8153 }
8154
8155 case ls_pound:
8156 {
8157 if(p[lt_clock]>35)
8158 {
8159 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_pound, d->d1, zinit.heroAnimationStyle);
8160 p[lt_tile]+=(((p[lt_clock]>>2)%3)*(p[lt_extend]==2?2:1));
8161
8162 if(p[lt_clock]>=47)
8163 {
8164 p[lt_clock]=-1;
8165 }
8166 }
8167 else
8168 {
8169 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_walk, d->d1, zinit.heroAnimationStyle);
8170 }
8171
8172 break;
8173 }
8174
8175 case ls_float:
8176 {
8177 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8178 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8179
8180 if(p[lt_clock]>=23)
8181 {
8182 p[lt_clock]=-1;
8183 }
8184
8185 break;
8186 }
8187
8188 case ls_swim:
8189 {
8190 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_swim, d->d1, zinit.heroAnimationStyle);
8191 p[lt_tile]+=((p[lt_clock]/12)%4)<<(p[lt_extend]==2?1:0);
8192
8193 if(p[lt_clock]>=47)
8194 {
8195 p[lt_clock]=-1;
8196 }
8197
8198 break;
8199 }
8200
8201 case ls_dive:
8202 {
8203 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_dive, d->d1, zinit.heroAnimationStyle);
8204
8205 if(p[lt_clock]>=50)
8206 {
8207 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8208 };
8209
8210 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8211
8212 if(p[lt_clock]>=81)
8213 {
8214 p[lt_clock]=-1;
8215 }
8216
8217 break;
8218 }
8219
8220 case ls_drown:
8221 {
8222 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_drown, d->d1, zinit.heroAnimationStyle);
8223
8224 if(p[lt_clock]<=4)
8225 {
8226 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8227 };
8228
8229 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8230
8231 if(p[lt_clock]>=81)
8232 {
8233 p[lt_clock]=-1;
8234 }
8235
8236 break;
8237 }
8238
8239 case ls_sidedrown:
8240 {
8241 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_sidedrown, d->d1, zinit.heroAnimationStyle);
8242 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8243
8244 if(p[lt_clock]<=4)
8245 {
8246 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_jump, d->d1, zinit.heroAnimationStyle);
8247 p[lt_tile]+=p[lt_extend]==2?((int32_t)p[lt_clock]/8)*2:((int32_t)p[lt_clock]/8);
8248 };
8249
8250
8251 if(p[lt_clock]>=81)
8252 {
8253 p[lt_clock]=-1;
8254 }
8255
8256 break;
8257 }
8258
8259 case ls_lavadrown:
8260 {
8261 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_lavadrown, d->d1, zinit.heroAnimationStyle);
8262
8263 if(p[lt_clock]<=4)
8264 {
8265 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_float, d->d1, zinit.heroAnimationStyle);
8266 };
8267
8268 p[lt_tile]+=((p[lt_clock]/6)%4)<<(p[lt_extend]==2?1:0);
8269
8270 if(p[lt_clock]>=81)
8271 {
8272 p[lt_clock]=-1;
8273 }
8274
8275 break;
8276 }
8277
8278 case ls_falling:
8279 {
8280 herotile(&p[lt_tile], &p[lt_flip], &p[lt_extend], ls_falling, d->d1, zinit.heroAnimationStyle);
8281 p[lt_tile] += ((p[lt_clock]%70)/10)*(p[lt_extend]==2 ? 2 : 1);
8282 break;
8283 }
8284
8285 case ls_landhold1:
8286 {
8287 herotile(&p[lt_tile], &p[lt_flip], ls_landhold1, d->d1, zinit.heroAnimationStyle);
8288 break;
8289 }
8290
8291 case ls_landhold2:
8292 {
8293 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8294 break;
8295 }
8296
8297 case ls_waterhold1:
8298 {
8299 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold1, d->d1, zinit.heroAnimationStyle);
8300 break;
8301 }
8302
8303 case ls_waterhold2:
8304 {
8305 herotile(&p[lt_tile], &p[lt_flip], ls_waterhold2, d->d1, zinit.heroAnimationStyle);
8306 break;
8307 }
8308
8309 case ls_sidewaterhold1:
8310 {
8311 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold1, d->d1, zinit.heroAnimationStyle);
8312 break;
8313 }
8314
8315 case ls_sidewaterhold2:
8316 {
8317 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8318 break;
8319 }
8320
8321 case ls_cast:
8322 {
8323 herotile(&p[lt_tile], &p[lt_flip], ls_cast, d->d1, zinit.heroAnimationStyle);
8324
8325 if(p[lt_clock]<96)
8326 {
8327 herotile(&p[lt_tile], &p[lt_flip], ls_landhold2, d->d1, zinit.heroAnimationStyle);
8328 };
8329
8330 if(p[lt_clock]>=194)
8331 {
8332 p[lt_clock]=-1;
8333 }
8334
8335 break;
8336 }
8337
8338 case ls_sideswimcast:
8339 {
8340 herotile(&p[lt_tile], &p[lt_flip], ls_sideswimcast, d->d1, zinit.heroAnimationStyle);
8341
8342 if(p[lt_clock]<96)
8343 {
8344 herotile(&p[lt_tile], &p[lt_flip], ls_sidewaterhold2, d->d1, zinit.heroAnimationStyle);
8345 };
8346
8347 if(p[lt_clock]>=194)
8348 {
8349 p[lt_clock]=-1;
8350 }
8351
8352 break;
8353 }
8354
8355 case ls_lifting:
8356 {
8357 herotile(&p[lt_tile], &p[lt_flip], ls_lifting, d->d1, zinit.heroAnimationStyle);
8358 size_t fr = p[lt_clock] / lspeed;
8359 if(fr >= p[lt_frames])
8360 {
8361 fr = 0;
8362 p[lt_clock] = -1;
8363 }
8364 p[lt_tile] += fr*(p[lt_extend]==2?2:1);
8365 break;
8366 }
8367 case ls_liftwalk:
8368 {
8369 herotile(&p[lt_tile], &p[lt_flip], ls_liftwalk, d->d1, zinit.heroAnimationStyle);
8370
8371 if(p[lt_clock]>=(64*(hero_animation_speed)))
8372 {
8373 p[lt_tile]+=(p[lt_extend]==2?2:1);
8374
8375 int32_t l=((p[lt_clock]/hero_animation_speed)&15);
8376 l-=((l>3)?1:0)+((l>12)?1:0);
8377 p[lt_tile]+=(l/2)*(p[lt_extend]==2?2:1);
8378
8379 if(p[lt_clock]>=255)
8380 {
8381 p[lt_clock]=-1;
8382 }
8383 }
8384 break;
8385 }
8386
8387 default:
8388 break;
8389 }
8390 break;
8391
8392 default:
8393 break;
8394 }
8395
8396 if((p[lt_tile]!=oldtile)||(p[lt_flip]!=oldflip))
8397 {
8398 d->flags|=D_DIRTY;
8399 }
8400
8401 break;
8402 }
8403
8404 case MSG_DRAW:
8405 {
8406 BITMAP *buf=create_bitmap_ex(8,1,1);
8407 BITMAP *buf2=buf;
8408 int32_t dummy1, dummy2;
8409 int32_t extend;
8410 herotile(&dummy1, &dummy2, &extend, d->d2, d->d1, zinit.heroAnimationStyle);
8411 int32_t w = 16;
8412 int32_t h = 16;
8413
8414 switch(extend)
8415 {
8416 case 0: //16x16
8417 break;
8418
8419 case 1: //16x32
8420 w = 16;
8421 h = 32;
8422 break;
8423
8424 case 2: //32x32
8425 w = 32;
8426 h = 32;
8427 break;
8428
8429 default:
8430 break;
8431 }
8432
8433 buf = create_bitmap_ex(8,w,h);
8434
8435 w *= 2;
8436 h *= 2;
8437
8438 BITMAP *bigbmp = create_bitmap_ex(8,w+4,h+4);
8439
8440 if(buf && bigbmp)
8441 {
8442 clear_to_color(buf, bg);
8443
8444 switch(extend)
8445 {
8446 case 0:
8447 overtile16(buf,p[lt_tile],0,0,6,p[lt_flip]);
8448 stretch_blit(buf, bigbmp, 0,0, 16, 16, 2, 2, w, h);
8449 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8450 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8451 break;
8452
8453 case 1:
8454 overtile16(buf,p[lt_tile]-TILES_PER_ROW,0,0,6,p[lt_flip]);
8455 overtile16(buf,p[lt_tile],0,16,6,p[lt_flip]);
8456 stretch_blit(buf, bigbmp, 0,0, 16, 32, 2, 2, w, h);
8457 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8458 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8459 break;
8460
8461 case 2:
8462 overtile16(buf,p[lt_tile]-TILES_PER_ROW,8,0,6,p[lt_flip]); //top middle
8463 overtile16(buf,p[lt_tile]-TILES_PER_ROW-(p[lt_flip]?-1:1),-8,0,6,p[lt_flip]); //top left
8464 overtile16(buf,p[lt_tile]-TILES_PER_ROW+(p[lt_flip]?-1:1),8+16,0,6,p[lt_flip]); //top right
8465 overtile16(buf,p[lt_tile]-(p[lt_flip]?-1:1),-8,16,6,p[lt_flip]); //bottom left
8466 overtile16(buf,p[lt_tile]+(p[lt_flip]?-1:1),8+16,16,6,p[lt_flip]); //bottom right
8467 overtile16(buf,p[lt_tile],8,16,6,p[lt_flip]); //bottom middle
8468 stretch_blit(buf, bigbmp, 0,0, 32, 32, 2, 2, w, h);
8469 jwin_draw_frame(bigbmp,0, 0, w+4, h+4, FR_DEEP);
8470 blit(bigbmp,screen,0,0,d->x+8,d->y+4,w+4,h+4);
8471 break;
8472
8473 default:
8474 break;
8475 }
8476
8477 destroy_bitmap(bigbmp);
8478 destroy_bitmap(buf);
8479 destroy_bitmap(buf2);
8480 }
8481 }
8482 break;
8483
8484 case MSG_END:
8485 {
8486 free(d->dp3);
8487 break;
8488 }
8489 }
8490
8491 return D_O_K;
8492 }
8493
8494 int32_t onCustomHero()
8495 {
8496 //setupherotiles(zinit.heroAnimationStyle);
8497 if(zinit.heroAnimationStyle==las_zelda3slow)
8498 {
8499 hero_animation_speed=2;
8500 }
8501 else
8502 {
8503 hero_animation_speed=1;
8504 }
8505
8506 herotile_dlg[0].dp2=get_zc_font(font_lfont);
8507 herotile_dlg[189].flags = get_qr(qr_LTTPCOLLISION)? D_SELECTED : 0;
8508 herotile_dlg[192].flags = get_qr(qr_LTTPWALK)? D_SELECTED : 0;
8509 herotile_dlg[194].d1=(zinit.hero_swim_speed<60)?0:1;
8510 herotile_dlg[191].d1=zinit.heroAnimationStyle;
8511
8512 large_dialog(herotile_dlg, 2.0);
8513
8514 int32_t oldWalkSpr[4][3];
8515 int32_t oldStabSpr[4][3];
8516 int32_t oldSlashSpr[4][3];
8517 int32_t oldRevSlashSpr[4][3];
8518 int32_t oldFloatSpr[4][3];
8519 int32_t oldSwimSpr[4][3];
8520 int32_t oldDiveSpr[4][3];
8521 int32_t oldPoundSpr[4][3];
8522 int32_t oldJumpSpr[4][3];
8523 int32_t oldChargeSpr[4][3];
8524 int32_t oldCastSpr[3];
8525 int32_t oldsideswimCastSpr[3];
8526 int32_t oldHoldSpr[2][3][3];
8527 int32_t oldDrownSpr[4][3];
8528 int32_t oldSideDrownSpr[4][3];
8529 int32_t oldFallSpr[4][3];
8530 int32_t oldLavaDrownSpr[4][3];
8531 int32_t oldSideSwimSpr[4][3];
8532 int32_t oldSideSwimSlashSpr[4][3];
8533 int32_t oldSideSwimStabSpr[4][3];
8534 int32_t oldSideSwimPoundSpr[4][3];
8535 int32_t oldSideSwimChargeSpr[4][3];
8536 int32_t oldSideSwimHoldSpr[3][3];
8537 int32_t oldLiftingSpr[4][4];
8538 int32_t oldLiftingWalkSpr[4][3];
8539 char hmr1[8];
8540 char hmr2[8];
8541 char hmr3[8];
8542 char hmr4[8];
8543 sprintf(hmr1,"%d",hammeroffsets[0]);
8544 sprintf(hmr2,"%d",hammeroffsets[1]);
8545 sprintf(hmr3,"%d",hammeroffsets[2]);
8546 sprintf(hmr4,"%d",hammeroffsets[3]);
8547 herotile_dlg[240].dp = hmr1;
8548 herotile_dlg[241].dp = hmr2;
8549 herotile_dlg[242].dp = hmr3;
8550 herotile_dlg[243].dp = hmr4;
8551 char liftframes1[4];
8552 char liftframes2[4];
8553 char liftframes3[4];
8554 char liftframes4[4];
8555 sprintf(liftframes1,"%d",vbound(liftingspr[0][spr_frames],1,255));
8556 sprintf(liftframes2,"%d",vbound(liftingspr[1][spr_frames],1,255));
8557 sprintf(liftframes3,"%d",vbound(liftingspr[2][spr_frames],1,255));
8558 sprintf(liftframes4,"%d",vbound(liftingspr[3][spr_frames],1,255));
8559 herotile_dlg[280].dp = liftframes1;
8560 herotile_dlg[281].dp = liftframes2;
8561 herotile_dlg[282].dp = liftframes3;
8562 herotile_dlg[283].dp = liftframes4;
8563 herotile_dlg[285].dp = liftspeed;
8564 memcpy(oldWalkSpr, walkspr, 4*3*sizeof(int32_t));
8565 memcpy(oldStabSpr, stabspr, 4*3*sizeof(int32_t));
8566 memcpy(oldSlashSpr, slashspr, 4*3*sizeof(int32_t));
8567 memcpy(oldRevSlashSpr, revslashspr, 4*3*sizeof(int32_t));
8568 memcpy(oldFloatSpr, floatspr, 4*3*sizeof(int32_t));
8569 memcpy(oldSwimSpr, swimspr, 4*3*sizeof(int32_t));
8570 memcpy(oldDiveSpr, divespr, 4*3*sizeof(int32_t));
8571 memcpy(oldPoundSpr, poundspr, 4*3*sizeof(int32_t));
8572 memcpy(oldJumpSpr, jumpspr, 4*3*sizeof(int32_t));
8573 memcpy(oldChargeSpr, chargespr, 4*3*sizeof(int32_t));
8574 memcpy(oldCastSpr, castingspr, 3*sizeof(int32_t));
8575 memcpy(oldsideswimCastSpr, sideswimcastingspr, 3*sizeof(int32_t));
8576 memcpy(oldHoldSpr, holdspr, 2*3*3*sizeof(int32_t));
8577 memcpy(oldDrownSpr, drowningspr, 4*3*sizeof(int32_t));
8578 memcpy(oldSideDrownSpr, sidedrowningspr, 4*3*sizeof(int32_t));
8579 memcpy(oldFallSpr, fallingspr, 4*3*sizeof(int32_t));
8580 memcpy(oldLavaDrownSpr, drowning_lavaspr, 4*3*sizeof(int32_t));
8581 memcpy(oldSideSwimSpr, sideswimspr, 4*3*sizeof(int32_t));
8582 memcpy(oldSideSwimSlashSpr, sideswimslashspr, 4*3*sizeof(int32_t));
8583 memcpy(oldSideSwimStabSpr, sideswimstabspr, 4*3*sizeof(int32_t));
8584 memcpy(oldSideSwimPoundSpr, sideswimpoundspr, 4*3*sizeof(int32_t));
8585 memcpy(oldSideSwimChargeSpr, sideswimchargespr, 4*3*sizeof(int32_t));
8586 memcpy(oldSideSwimHoldSpr, sideswimholdspr, 3*3*sizeof(int32_t));
8587 memcpy(oldLiftingSpr, liftingspr, 4*4*sizeof(int32_t));
8588 memcpy(oldLiftingWalkSpr, liftingwalkspr, 4*3*sizeof(int32_t));
8589
8590 //Populate Player defenses
8591 for (int32_t i = 0; i < wMax - wEnemyWeapons - 1; i++)
8592 {
8593 herotile_dlg[144 + i].d1 = hero_defence[wEnemyWeapons+i];
8594 }
8595 herotile_dlg[154+8].d1 = hero_defence[wFire];
8596 herotile_dlg[155+8].d1 = hero_defence[wBomb];
8597 herotile_dlg[156+8].d1 = hero_defence[wRefMagic];
8598 herotile_dlg[157+8].d1 = hero_defence[wRefFireball];
8599 herotile_dlg[158+8].d1 = hero_defence[wRefRock];
8600 herotile_dlg[159+8].d1 = hero_defence[wRefBeam];
8601
8602 herotile_dlg[171+8].d1 = hero_defence[wScript1];
8603 herotile_dlg[172+8].d1 = hero_defence[wScript2];
8604 herotile_dlg[173+8].d1 = hero_defence[wScript3];
8605 herotile_dlg[174+8].d1 = hero_defence[wScript4];
8606 herotile_dlg[175+8].d1 = hero_defence[wScript5];
8607 herotile_dlg[176+8].d1 = hero_defence[wScript6];
8608 herotile_dlg[177+8].d1 = hero_defence[wScript7];
8609 herotile_dlg[178+8].d1 = hero_defence[wScript8];
8610 herotile_dlg[179+8].d1 = hero_defence[wScript9];
8611 herotile_dlg[180+8].d1 = hero_defence[wScript10];
8612
8613 int32_t ret = 0;
8614 do
8615 {
8616 ret = do_zqdialog(herotile_dlg, 3);
8617
8618 if (ret == 3)
8619 {
8620 saved = false;
8621 set_qr(qr_LTTPCOLLISION, (herotile_dlg[181+8].flags & D_SELECTED) ? 1 : 0);
8622 set_qr(qr_LTTPWALK, (herotile_dlg[184+8].flags & D_SELECTED) ? 1 : 0);
8623 zinit.hero_swim_speed = (herotile_dlg[186+8].d1 == 0) ? 50 : 67;
8624
8625 //Save Player defenses
8626 for (int32_t i = 0; i < wMax - wEnemyWeapons - 1; i++)
8627 {
8628 hero_defence[wEnemyWeapons + i] = herotile_dlg[137 + 7 + i].d1;
8629 }
8630 hero_defence[wFire] = herotile_dlg[154+8].d1;
8631 hero_defence[wBomb] = herotile_dlg[155+8].d1;
8632 hero_defence[wRefMagic] = herotile_dlg[156+8].d1;
8633 hero_defence[wRefFireball] = herotile_dlg[157+8].d1;
8634 hero_defence[wRefRock] = herotile_dlg[158+8].d1;
8635 hero_defence[wRefBeam] = herotile_dlg[159+8].d1;
8636
8637 hero_defence[wScript1] = herotile_dlg[171+8].d1;
8638 hero_defence[wScript2] = herotile_dlg[172+8].d1;
8639 hero_defence[wScript3] = herotile_dlg[173+8].d1;
8640 hero_defence[wScript4] = herotile_dlg[174+8].d1;
8641 hero_defence[wScript5] = herotile_dlg[175+8].d1;
8642 hero_defence[wScript6] = herotile_dlg[176+8].d1;
8643 hero_defence[wScript7] = herotile_dlg[177+8].d1;
8644 hero_defence[wScript8] = herotile_dlg[178+8].d1;
8645 hero_defence[wScript9] = herotile_dlg[179+8].d1;
8646 hero_defence[wScript10] = herotile_dlg[180+8].d1;
8647 hammeroffsets[0] = atoi(hmr1);
8648 hammeroffsets[1] = atoi(hmr2);
8649 hammeroffsets[2] = atoi(hmr3);
8650 hammeroffsets[3] = atoi(hmr4);
8651 liftingspr[0][spr_frames] = vbound(atoi(liftframes1),1,255);
8652 liftingspr[1][spr_frames] = vbound(atoi(liftframes2),1,255);
8653 liftingspr[2][spr_frames] = vbound(atoi(liftframes3),1,255);
8654 liftingspr[3][spr_frames] = vbound(atoi(liftframes4),1,255);
8655 }
8656 else if (ret == 168)
8657 {
8658 for (int32_t i = 146; i < 168; i++)
8659 {
8660 herotile_dlg[i].d1 = herotile_dlg[145].d1;
8661 }
8662 for (int32_t i = 179; i < 189; i++)
8663 {
8664 herotile_dlg[i].d1 = herotile_dlg[145].d1;
8665 }
8666 }
8667 else
8668 {
8669 memcpy(walkspr, oldWalkSpr, 4 * 3 * sizeof(int32_t));
8670 memcpy(stabspr, oldStabSpr, 4 * 3 * sizeof(int32_t));
8671 memcpy(slashspr, oldSlashSpr, 4 * 3 * sizeof(int32_t));
8672 memcpy(revslashspr, oldRevSlashSpr, 4 * 3 * sizeof(int32_t));
8673 memcpy(floatspr, oldFloatSpr, 4 * 3 * sizeof(int32_t));
8674 memcpy(swimspr, oldSwimSpr, 4 * 3 * sizeof(int32_t));
8675 memcpy(divespr, oldDiveSpr, 4 * 3 * sizeof(int32_t));
8676 memcpy(poundspr, oldPoundSpr, 4 * 3 * sizeof(int32_t));
8677 memcpy(jumpspr, oldJumpSpr, 4 * 3 * sizeof(int32_t));
8678 memcpy(chargespr, oldChargeSpr, 4 * 3 * sizeof(int32_t));
8679 memcpy(castingspr, oldCastSpr, 3 * sizeof(int32_t));
8680 memcpy(sideswimcastingspr, oldsideswimCastSpr, 3 * sizeof(int32_t));
8681 memcpy(holdspr, oldHoldSpr, 2*3*3*sizeof(int32_t));
8682 memcpy(drowningspr, oldDrownSpr, 4 * 3 * sizeof(int32_t));
8683 memcpy(sidedrowningspr, oldSideDrownSpr, 4 * 3 * sizeof(int32_t));
8684 memcpy(fallingspr, oldFallSpr, 4 * 3 * sizeof(int32_t));
8685 memcpy(drowning_lavaspr, oldLavaDrownSpr, 4 * 3 * sizeof(int32_t));
8686 memcpy(sideswimspr, oldSideSwimSpr, 4 * 3 * sizeof(int32_t));
8687 memcpy(sideswimslashspr, oldSideSwimSlashSpr, 4 * 3 * sizeof(int32_t));
8688 memcpy(sideswimstabspr, oldSideSwimStabSpr, 4 * 3 * sizeof(int32_t));
8689 memcpy(sideswimpoundspr, oldSideSwimPoundSpr, 4 * 3 * sizeof(int32_t));
8690 memcpy(sideswimchargespr, oldSideSwimChargeSpr, 4 * 3 * sizeof(int32_t));
8691 memcpy(sideswimholdspr, oldSideSwimHoldSpr, 3* 3 * sizeof(int32_t));
8692 memcpy(liftingspr, oldLiftingSpr, 4 * 4 * sizeof(int32_t));
8693 memcpy(liftingwalkspr, oldLiftingWalkSpr, 4 * 3 * sizeof(int32_t));
8694 }
8695 } while (ret == 168);
8696
8697 return D_O_K;
8698 }
8699
8700 6 void center_zq_custom_dialogs()
8701 {
8702 6 jwin_center_dialog(herotile_dlg);
8703 6 jwin_center_dialog(wpndata_dlg);
8704 6 jwin_center_dialog(enedata_dlg);
8705 6 }
8706